导航

  • 索引
  • 下一页 |
  • 上一页 |
  • CMake 4.2.0 »
  • 文档 »
  • cmake-properties(7) »
  • INTERFACE_LINK_LIBRARIES

INTERFACE_LINK_LIBRARIES¶

指定库的公共接口库列表。

此属性包含传递性链接依赖项的列表。当使用 target_link_libraries() 命令将目标链接到另一个目标时,列出的库(及其传递的接口库)也将提供给另一个目标。如果策略 CMP0022 为 OLD 或未设置,此属性将被 LINK_INTERFACE_LIBRARIES 或 LINK_INTERFACE_LIBRARIES_<CONFIG> 属性覆盖。

此属性的值由生成器在使用依赖目标构建链接规则时使用。依赖目标直接链接依赖项,这些依赖项由其 LINK_LIBRARIES 目标属性指定,这些依赖项首先被链接,然后是来自直接依赖项的 INTERFACE_LINK_LIBRARIES 属性的传递闭包的间接依赖项。请参阅策略 CMP0022。

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

注意

调用 target_link_libraries(<target> ...) 可能会更新 <target> 上的此属性。如果 <target> 不是在调用所在的同一目录中创建的,则 target_link_libraries() 会将每个条目包装成 ::@(directory-id);...;::@ 的形式,其中 ::@ 是字面量,而 (directory-id) 未指定。这会告知生成器,必须在调用者的作用域中查找命名的库,而不是在创建 <target> 的作用域中查找。有效的目录 ID 会在导出时被 install(EXPORT) 和 export() 命令剥离。

INTERFACE_LINK_LIBRARIES 为目标的依赖项添加了传递性链接依赖项。在高级用例中,可以使用 INTERFACE_LINK_LIBRARIES_DIRECT 和 INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE 目标属性来更新目标的依赖项的直接链接依赖项。

处理编译器驱动器差异¶

4.0 版本新增。

要将选项传递给链接器工具,每个编译器驱动程序都有自己的语法。可以使用 LINKER: 前缀和 , 分隔符以可移植的方式指定要传递给链接器工具的选项。LINKER: 会被相应的驱动程序选项替换,而 , 会被相应的驱动程序分隔符替换。驱动程序前缀和驱动程序分隔符由 CMAKE_<LANG>_LINKER_WRAPPER_FLAG 和 CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP 变量的值给出。

例如,对于 Clang,"LINKER:-z,defs" 会变成 -Xlinker -z -Xlinker defs;对于 GNU GCC,则会变成 -Wl,-z,defs。

LINKER: 前缀支持使用 SHELL: 前缀和空格作为分隔符来指定参数,作为一种替代语法。前面的示例将变为 "LINKER:SHELL:-z defs"。

注意

不支持在 LINKER: 前缀的开头以外的任何位置指定 SHELL: 前缀。

创建可重定位包¶

请注意,不建议使用依赖项的绝对路径来填充目标的 INTERFACE_LINK_LIBRARIES。这会将依赖项的库文件路径硬编码到已安装的包中,**这些路径是在构建包的机器上找到的**。

有关创建可重定位包(relocatable packages)时在指定使用需求时需要注意的额外事项的讨论,请参阅 cmake-packages(7) 手册的 创建可重定位包 部分。

目录

  • INTERFACE_LINK_LIBRARIES
    • 处理编译器驱动差异
    • 创建可重定位包

上一主题

INTERFACE_LINK_DIRECTORIES

下一主题

INTERFACE_LINK_LIBRARIES_DIRECT

本页

  • 显示源

快速搜索

导航

  • 索引
  • 下一页 |
  • 上一页 |
  • CMake 4.2.0 »
  • 文档 »
  • cmake-properties(7) »
  • INTERFACE_LINK_LIBRARIES
© Copyright 2000-2025 Kitware, Inc. and Contributors. 使用 Sphinx 8.2.3 创建。