【问题标题】:What does target_link_directories() do in CMake?target_link_directories() 在 CMake 中做了什么?
【发布时间】:2021-10-14 00:44:36
【问题描述】:

我正在学习标准的 CMake 函数,在阅读文档后,我仍然有这个问题。他们说

“指定链接器在链接给定目标时搜索库的路径”

但是当我使用已经知道我的库在哪里的target_link_libraries() 时,我真的不明白链接器如何查找库。

谢谢。

【问题讨论】:

  • 我还没有看到在新代码中有效地使用了target_link_directories。如果您正在使用目标,则没有必要。

标签: cmake linker static-libraries


【解决方案1】:

您传递给此命令的目录用于将不是 cmake 目标的内容传递给 target_link_libraries

来自docs of target_link_libraries

此命令有多个签名,详细信息将在下面的小节中详述。它们都有一般形式

target_link_libraries(<target> ... <item>... ...)

[...]

每个<item> 可能是:

  • 库目标名称: [...]
  • 库文件的完整路径: [...]
  • 简单的库名称: 生成的链接行将要求链接器搜索库(例如 foo 变为 -lfoo 或 foo.lib)。 [...]
  • ...

第三个选项(“一个普通的库名”)是与target_link_directories 相关的选项;如果链接器默认找不到库,则需要通过target_link_directories添加提供路径(或通过修改LINK_DIRECTORIES目标属性的类似方式)。

【讨论】:

  • 我要补充一点,如果原生 CMake 包或 Find 模块不可用,您不应该在新代码中使用第二个或第三个选项,而应该使用 find_library 创建导入的目标。跨度>
猜你喜欢
  • 2018-11-01
  • 2012-08-27
  • 2020-10-29
  • 1970-01-01
  • 2014-08-03
  • 2012-02-12
  • 2010-10-26
  • 2019-07-12
  • 2010-11-20
相关资源
最近更新 更多