将库链接到 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 - 全局链接器标志设置(适用于目录中的所有目标)