CMake条件库链接取决于平台

问题描述 投票:1回答:1

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

我有这个代码在我的CMakeLists.txtTARGET_LINK_LIBRARIES(app -lboost_system -lboost_thread -lcrypt)上的Linux上运行

但是在OpenBSD上,-lboost_thread-lboost_thread-mt而不是-lcrypt。有没有办法以这样的方式编写CMakeLists.txt,它根据哪个库存在来处理这两种情况?

c++ cmake
1个回答
2
投票

处理这种平台特定差异的需要是人们应该使用查找模块的原因。特别是FindBoost在这种情况下。在执行find_package之后,您应该能够通过其规范目标名称Boost::thread拉入线程库。

任何必需的PUBLIC库或标题都将成为规范目标链接界面的一部分,因此将自动添加,您无需付出更多努力。您需要做的就是将规范目标添加为链接依赖项

target_link_libraries(app Boost::thread)
© www.soinside.com 2019 - 2024. All rights reserved.