导航

  • 索引
  • 下一个 |
  • 上一个 |
  • CMake 4.0.0 »
  • 文档 »
  • cmake-commands(7) »
  • target_link_options

target_link_options¶

在 3.13 版本中添加。

为可执行文件、共享库或模块库目标添加链接步骤的选项。

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

命名的 <target> 必须通过诸如 add_executable() 或 add_library() 之类的命令创建,并且不能是 ALIAS 目标。

此命令可用于添加任何链接选项,但存在其他命令来添加库(target_link_libraries() 或 link_libraries())。 请参阅 directory 和 target LINK_OPTIONS 属性的文档。

注意

此命令不能用于为静态库目标添加选项,因为它们不使用链接器。 要添加 archiver 或 MSVC librarian 标志,请参阅 STATIC_LIBRARY_OPTIONS 目标属性。

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

需要 INTERFACE、PUBLIC 和 PRIVATE 关键字来指定以下参数的 作用域。PRIVATE 和 PUBLIC 项将填充 <target> 的 LINK_OPTIONS 属性。PUBLIC 和 INTERFACE 项将填充 <target> 的 INTERFACE_LINK_OPTIONS 属性。 以下参数指定链接选项。 对相同的 <target> 的重复调用会按调用顺序追加项。

注意

IMPORTED 目标 仅支持 INTERFACE 项。

target_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 变量的值给出。

例如,"LINKER:-z,defs" 对于 Clang 变为 -Xlinker -z -Xlinker defs,对于 GNU GCC 变为 -Wl,-z,defs。

LINKER: 前缀可以指定为 SHELL: 前缀表达式的一部分。

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

注意

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

参见¶

  • target_compile_definitions()

  • target_compile_features()

  • target_compile_options()

  • target_include_directories()

  • target_link_libraries()

  • target_link_directories()

  • target_precompile_headers()

  • target_sources()

  • CMAKE_<LANG>_FLAGS 和 CMAKE_<LANG>_FLAGS_<CONFIG> 添加语言范围的标志,这些标志传递给编译器的所有调用。 这包括驱动编译和驱动链接的调用。

目录

  • target_link_options
    • 主机和设备特定的链接选项
    • 选项去重
    • 处理编译器驱动程序差异
    • 参见

上一个主题

target_link_libraries

下一个主题

target_precompile_headers

本页

  • 显示源代码

快速搜索

导航

  • 索引
  • 下一个 |
  • 上一个 |
  • CMake 4.0.0 »
  • 文档 »
  • cmake-commands(7) »
  • target_link_options
© Copyright 2000-2025 Kitware, Inc. and Contributors. 使用 Sphinx 7.3.7 创建。