链接目录¶
添加链接器将在其中查找库的目录。
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() 来尽可能地本地化效果。特定于目标的命令还可以控制搜索目录如何传播到其他相关目标。