CMake中文手册_link_directories(3.26)

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 版本中新增:“generator expressions”语法可应用于 link_directories 参数,格式为“$<…>”。有关可用表达式,请参阅 cmake-generator-expressions(7)手册。

注意:这个命令用得很少,且在有其他选择的情况下应避免使用。尽可能传递库的完整绝对路径,因为这样可以确保始终链接正确的库。find_library()命令提供完整路径,通常可以直接在调用 target_link_libraries()中使用。可能需要库搜索路径的情况包括:
诸如 Xcode 的项目生成器可能允许用户在构建时切换目标架构,但要链接的库没有提供全部目标架构的绝对路径,因为它不是通用二进制文件。

库本身可能有其他私有库依赖关系,这些依赖关系希望通过 RPATH 机制找到,但某些链接器无法完全解码这些路径(例如,由于存在 $ORIGIN 等)。

如果必须提供库搜索路径,尽量在可能的情况下使用 target_link_directories() 命令而不是 link_directories(),以使其影响尽量局限。针对特定目标的命令还可控制搜索目录如何传播到其他依赖目标。

猜你喜欢

转载自blog.csdn.net/qq_21438461/article/details/130598651