add_link_options¶
加入於版本 3.13。
為目前目錄以及此命令被調用後加入的可執行檔、共享函式庫或模組函式庫目標的連結步驟添加選項。
add_link_options(<option> ...)
此命令可用於添加任何連結選項,但存在替代命令來添加函式庫 (target_link_libraries()
或 link_libraries()
)。 請參閱 directory
和 target
LINK_OPTIONS
屬性的文件。
注意
此命令不能用於為靜態函式庫目標添加選項,因為它們不使用連結器。 若要添加歸檔器或 MSVC 程式庫管理員標誌,請參閱 STATIC_LIBRARY_OPTIONS
目標屬性。
add_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:
前綴。
參見¶
CMAKE_<LANG>_FLAGS
和CMAKE_<LANG>_FLAGS_<CONFIG>
添加語言範圍的標誌,這些標誌會傳遞給編譯器的所有調用。 這包括驅動編譯和驅動連結的調用。