导航

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

INTERFACE_LINK_OPTIONS¶

3.13 版本新增。

库的公共链接选项需求列表。

目标可以填充此属性,以发布编译目标头文件所需的链接选项。target_link_options() 命令使用 PUBLIC 和 INTERFACE 关键字提供的值来填充此属性。项目也可以直接获取和设置此属性。

当使用 target_link_libraries() 指定目标依赖项时,CMake 将会从所有目标依赖项读取此属性,以确定使用者(consumer)的构建属性。

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

主机和设备特定链接选项¶

在 3.18 版本中添加: 当涉及设备链接步骤时(由 CUDA_SEPARABLE_COMPILATION 和 CUDA_RESOLVE_DEVICE_SYMBOLS 属性以及策略 CMP0105 控制),原始选项将传递给主机和设备链接步骤(在 -Xcompiler 或等效的设备链接选项中)。用 $<DEVICE_LINK:...> 生成器表达式包装的选项仅用于设备链接步骤。用 $<HOST_LINK:...> 生成器表达式包装的选项仅用于主机链接步骤。

选项去重¶

用于目标的最终选项集通过累积当前目标及其依赖项的使用要求的选项来构建。选项集经过去重以避免重复。

在 3.12 版本中添加: 虽然对单个选项很有益,但去重步骤可能会打乱选项组。例如,-option A -option B 会变成 -option A B。可以通过使用类 shell 引号以及 SHELL: 前缀来指定一组选项。 SHELL: 前缀将被删除,其余的选项字符串将使用 separate_arguments() 命令的 UNIX_COMMAND 模式进行解析。例如,"SHELL:-option A" "SHELL:-option B" 会变成 -option A -option B。

处理编译器驱动器差异¶

要将选项传递给链接器工具,每个编译器驱动程序都有其自己的语法。 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: 前缀和空格作为分隔符来指定参数,作为一种替代语法。前面的示例将变为 "LINKER:SHELL:-z defs"。

注意

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

目录

  • INTERFACE_LINK_OPTIONS
    • 主机和设备特定链接选项
    • 选项去重
    • 处理编译器驱动差异

上一主题

INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE

下一主题

INTERFACE_POSITION_INDEPENDENT_CODE

本页

  • 显示源

快速搜索

导航

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