CMake条件库链接取决于平台

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake条件库链接取决于平台相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

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

target_link_libraries(app Boost::thread)

以上是关于CMake条件库链接取决于平台的主要内容,如果未能解决你的问题,请参考以下文章

如何预测CMake在给定平台上选择LIBDIR

CMAKE使用链接第三方SO库

使用 CMake 链接到可可库(C++ 与 Objective-C 混合)

如何使用cmake生成基于静态库的动态链接库

Cmake 库依赖关系的传递

使用 c++/cmake 链接静态库