LINK_LIBRARIES¶
直接連結的依賴庫列表。
此屬性指定將用於連結的庫或目標列表。除了接受來自 target_link_libraries()
命令的值之外,也可以使用 set_property()
命令直接在任何目標上設定值。
產生器使用此屬性的值來建構目標的連結規則。直接連結的依賴項會先連結,然後是來自直接依賴項的 INTERFACE_LINK_LIBRARIES
屬性的遞移封閉性間接依賴項。請參閱策略 CMP0022
。
LINK_LIBRARIES
的內容可以使用 產生器表達式
,語法為 $<...>
。策略 CMP0131
影響此屬性的 LINK_ONLY
產生器表達式的行為。
有關定義建構系統屬性的更多資訊,請參閱 cmake-buildsystem(7)
文件。
注意
呼叫 target_link_libraries(<target> ...)
可能會更新 <target>
上的此屬性。如果 <target>
不是在與呼叫相同的目錄中建立的,則 target_link_libraries()
將會以 ::@(directory-id);...;::@
的形式包裝每個條目,其中 ::@
是字面上的,而 (directory-id)
是未指定的。這告訴產生器,命名的庫必須在呼叫者的範圍內查找,而不是在建立 <target>
的範圍內查找。有效的目錄 ID 會在 install(EXPORT)
和 export()
命令匯出時被移除。
在進階使用案例中,此屬性指定的直接連結依賴項列表可能會被來自依賴項的使用需求更新。請參閱 INTERFACE_LINK_LIBRARIES_DIRECT
和 INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE
目標屬性。
有關 CMake 如何在連結器命令行上排序直接連結依賴項的詳細資訊,請參閱 CMAKE_LINK_LIBRARIES_STRATEGY
變數和對應的 LINK_LIBRARIES_STRATEGY
目標屬性。
處理編譯器驅動程式差異¶
在版本 4.0 中新增。
為了將選項傳遞給連結器工具,每個編譯器驅動程式都有其自己的語法。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:-z defs"
。
注意
不支援在 LINKER:
前綴的開頭以外的任何地方指定 SHELL:
前綴。