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