CMake中文手册_target_link_directories(3.26)

target_link_directories

在 3.13 版本中新增。

为目标添加链接目录。

target_link_directories(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

指定链接器在链接给定目标时应搜索库所在的路径。每个项目可以是绝对路径或相对路径,后者将相对于当前源目录解释。这些项目将添加到链接命令中。

指定的 必须是通过诸如 add_executable() 或 add_library() 等命令创建的,并且不得是 ALIAS 目标。

INTERFACE、PUBLIC 和 PRIVATE 关键字需要指定之后跟随的项目的范围。PRIVATE 和 PUBLIC 项将填充 的 LINK_DIRECTORIES 属性。PUBLIC 和 INTERFACE 项目将填充 的 INTERFACE_LINK_DIRECTORIES 属性(仅 IMPORTED 目标支持 INTERFACE 项)。在将每个项添加到相关属性之前,必要时将其转换为绝对路径。对同一 的重复调用将按顺序追加项目。

如果指定了 BEFORE,则将把内容添加到相关属性的前面,而不是追加。

target_link_directories 的参数可以使用生成器表达式,语法为 $<…>。有关可用表达式,请参阅 cmake-generator-expressions(7) 手册。有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7) 手册。

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

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

猜你喜欢

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