link_directories¶
新增連結器將在其中尋找函式庫的目錄。
link_directories([AFTER|BEFORE] directory1 [directory2 ...])
新增連結器應搜尋函式庫的路徑。給定此命令的相對路徑會被解釋為相對於目前的原始碼目錄,請參見 CMP0015
。
此命令將僅適用於在其被呼叫之後建立的目標。
Added in version 3.13: 目錄會被新增到目前 LINK_DIRECTORIES
目錄屬性,對於目前的 CMakeLists.txt
檔案,並在需要時將相對路徑轉換為絕對路徑。 有關定義建置系統屬性的更多資訊,請參閱 cmake-buildsystem(7)
手冊。
Added in version 3.13: 預設情況下,指定的目錄會附加到目前的目錄列表中。 可以透過將 CMAKE_LINK_DIRECTORIES_BEFORE
設定為 ON
來變更此預設行為。 透過明確使用 AFTER
或 BEFORE
,您可以選擇附加或前置,而與預設值無關。
Added in version 3.13: link_directories
的參數可以使用帶有語法 "$<...>" 的「生成器表達式」。 有關可用的表達式,請參閱 cmake-generator-expressions(7)
手冊。
注意
此命令很少是必要的,在有其他選擇的情況下應避免使用。 盡可能優先傳遞函式庫的完整絕對路徑,因為這可確保始終連結正確的函式庫。 find_library()
命令提供了完整路徑,通常可以直接在對 target_link_libraries()
的呼叫中使用。 可能需要函式庫搜尋路徑的情況包括
像是 Xcode 的專案產生器,使用者可以在建置時切換目標架構,但無法使用函式庫的完整路徑,因為它僅提供一種架構(即,它不是通用二進制檔案)。
函式庫本身可能具有其他私有函式庫依賴項,這些依賴項期望透過
RPATH
機制找到,但是某些連結器無法完全解碼這些路徑(例如,由於存在諸如$ORIGIN
之類的東西)。
如果必須提供函式庫搜尋路徑,則在可能的情況下,優先使用 target_link_directories()
命令而不是 link_directories()
來本地化效果。 目標特定的命令還可以控制搜尋目錄如何傳播到其他相依目標。