将库链接到 cmake 项目中的所有目标

Posted

技术标签:

【中文标题】将库链接到 cmake 项目中的所有目标【英文标题】:link library to all targets in cmake project 【发布时间】:2015-06-13 13:10:11 【问题描述】:

让我描述一下我认为应该支持的足够常见的用例。考虑一个由一个库和一组使用该库的可执行文件组成的项目。一种直接的方法是 add_library,后跟一系列 add_executable() target_link_lib() 对。

这是很多样板代码。能够执行 set(PROJECT_LINK_LIBS, lib1 ...) 之类的操作并让 cmake 删除额外的样板文件会很好。

再想一想,我意识到我想要一个行为类似于 include_directories 的 link_libraries 函数。我认为这是:

    在很多情况下都会很有用。 会导致干燥器 CMakeLists。 将鼓励更好的代码组织——自然会激励组织文件夹、代码和可执行文件,使所有可执行文件具有相同的依赖关系——当然是一种干净的做法。

有这样的吗?

【问题讨论】:

没有任何内置功能可以删除它。但是,您可以开发自己的 cmake 宏和函数来删除一些样板。 cmake: add library to all targets的可能重复 【参考方案1】:

正如https://***.com/a/50295894/129550 所述,请求的link_libraries(example example2) 函数实际上现在是cmake 的一部分。

【讨论】:

【参考方案2】:

这个答案可能已经过时了: 检查新的变量集CMAKE_<LANG>_STANDARD_LIBRARIES

原答案: 现在似乎存在一个CMAKE_STANDARD_LIBRARIES 变量,您可以根据需要在其中附加库。然而,这个变量似乎期望库的完整路径。

见here。

【讨论】:

以上是关于将库链接到 cmake 项目中的所有目标的主要内容,如果未能解决你的问题,请参考以下文章

CMake项目结构:如何正确地将库合并在一起并将它们包含在多个可执行文件中

cmake - 全局链接器标志设置(适用于目录中的所有目标)

如何使用自制软件、cMake 和 cLion 将库添加到 C++ 项目

CMake 将库链接到一个库中

将库链接到另一个应用程序时,cmake 找不到库

由于 cmake 项目中的源更改,查找所有受影响的目标