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>
會加入傳遞給編譯器的所有調用的語言範圍旗標。這包括驅動編譯和驅動連結的調用。