CMake条件库链接取决于平台

时间:2019-04-14 06:23:09

标签: c++ cmake

我正在使用CMake将Boost链接到我的应用程序中:

我的CMakeLists.txt中有以下适用于Linux的代码: TARGET_LINK_LIBRARIES(app -lboost_system -lboost_thread -lcrypt)

但是在OpenBSD上,-lboost_thread-lboost_thread-mt,并且不需要-lcrypt。有没有一种写CMakeLists.txt的方式,使得它可以根据存在哪个库来处理这两种情况?

1 个答案:

答案 0 :(得分:2)

处理此类平台特定差异的需要是为什么应改为使用查找模块的原因。在这种情况下,具体为FindBoost。执行find_package之后,您应该能够通过其规范的目标名称Boost::thread来引入线程库。

任何必需的PUBLIC库或标头将成为规范目标的链接接口的一部分,因此将自动添加,而无需您费力。您需要做的就是将规范目标添加为链接依赖项

target_link_libraries(app Boost::thread)