link_directories¶
添加链接器将查找库的目录。
link_directories([AFTER|BEFORE] directory1 [directory2 ...])
添加链接器应搜索库的路径。为此命令提供的相对路径将解释为相对于当前源目录,请参阅 CMP0015。
该命令仅适用于在其被调用后创建的目标。
3.13 版本已添加: 这些目录被添加到当前 CMakeLists.txt 文件的 LINK_DIRECTORIES 目录属性中,并根据需要转换相对路径为绝对路径。有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7) 手册。
3.13 版本已添加: 默认情况下,指定的目录会追加到当前目录列表的末尾。可以通过将 CMAKE_LINK_DIRECTORIES_BEFORE 设置为 ON 来更改此默认行为。通过显式使用 AFTER 或 BEFORE,可以独立于默认设置来选择追加或前置。
3.13 版本已添加: link_directories 的参数可以使用“生成器表达式”,语法为 "$<...>"。有关可用表达式,请参阅 cmake-generator-expressions(7) 手册。
注意
这个命令很少需要,并且在有其他选择时应避免使用。尽可能首选传递库的完整绝对路径,因为这可以确保始终链接正确的库。 find_library() 命令提供了完整路径,通常可以直接在 target_link_libraries() 调用中使用。可能需要库搜索路径的情况包括:
项目生成器,例如
Xcode,用户可以在构建时切换目标架构,但无法使用库的完整路径,因为它只提供一种架构(即它不是通用二进制文件)。库本身可能具有其他私有库依赖项,这些依赖项期望通过
RPATH机制进行查找,但某些链接器无法完全解析这些路径(例如,由于存在像$ORIGIN这样的内容)。
如果必须提供库搜索路径,请优先使用 target_link_directories() 命令而不是 link_directories(),以尽可能地局部化影响。目标特定的命令还可以控制搜索目录如何传播到其他依赖目标。