LINK_OPTIONS¶
在版本 3.13 中添加。
将其作为共享库、模块和可执行目标的链接步骤以及设备链接步骤使用的选项列表。静态库目标需要使用 STATIC_LIBRARY_OPTIONS
目标属性。
这些选项同时用于正常链接和设备链接(请参见策略 CMP0105
)。要控制正常链接步骤和设备链接步骤的链接选项,可使用生成器表达式 $<HOST_LINK>
和 $<DEVICE_LINK>
。
此属性包含一个 用分号分隔的选项列表,其指定了迄今为止为其目标指定的选项。使用 target_link_options()
命令追加更多选项。
创建目标时,此属性由 LINK_OPTIONS
目录属性初始化,并由生成器用于为编译器设置选项。
LINK_OPTIONS
的内容可以采用语法为 $<...>
的“生成器表达式”。请参见 cmake-generator-expressions(7)
手册了解可用的表达式。请参见 cmake-buildsystem(7)
手册了解有关定义构建系统属性的更多信息。
注意
必须优先使用此属性,而不是 LINK_FLAGS
属性。
特定于主机和设备的链接选项¶
添加于版本 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:
前缀。