target_link_directories() 在 CMake 中做什么?

What does target_link_directories() do in CMake?

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

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

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

谢谢。

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

来自docs of target_link_libraries

This command has several signatures as detailed in subsections below. All of them have the general form

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

[...]

Each <item> may be:

  • A library target name: [...]
  • A full path to a library file: [...]
  • A plain library name: The generated link line will ask the linker to search for the library (e.g. foo becomes -lfoo or foo.lib). [...]
  • ...

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