link_directories¶
添加链接器查找库的目录。
link_directories([AFTER|BEFORE] directory1 [directory2 ...])
添加链接器应在其中搜索库的路径。给此命令的相对路径将解释为相对于当前源目录,请参见 CMP0015
。
该命令只适用于在调用后生成的 target。
在 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()
,将影响范围尽可能本地化。特定目标的命令还可以控制搜索目录如何传播到其他依赖目标。