首页 > 解决方案 > CMake 条件库链接取决于平台

问题描述

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

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

但是在 OpenBSD 上-lboost_thread-lboost_thread-mt相反的,并且-lcrypt不是必需的。有没有办法编写 CMakeLists.txt 以根据存在的库来处理这两种情况?

标签: c++cmake

解决方案


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

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

target_link_libraries(app Boost::thread)

推荐阅读