我正在使用CMake将Boost链接到我的应用程序中:
我的CMakeLists.txt
中有以下适用于Linux的代码:
TARGET_LINK_LIBRARIES(app -lboost_system -lboost_thread -lcrypt)
但是在OpenBSD上,-lboost_thread
是-lboost_thread-mt
,并且不需要-lcrypt
。有没有一种写CMakeLists.txt的方式,使得它可以根据存在哪个库来处理这两种情况?
答案 0 :(得分:2)
处理此类平台特定差异的需要是为什么应改为使用查找模块的原因。在这种情况下,具体为FindBoost。执行find_package
之后,您应该能够通过其规范的目标名称Boost::thread
来引入线程库。
任何必需的PUBLIC库或标头将成为规范目标的链接接口的一部分,因此将自动添加,而无需您费力。您需要做的就是将规范目标添加为链接依赖项
target_link_libraries(app Boost::thread)