CMP0008¶
使用完整路徑連結的函式庫必須具有有效的函式庫檔案名稱。
在 CMake 2.4 及更早的版本中,可以編寫如下程式碼:
target_link_libraries(myexe /full/path/to/somelib)
其中 somelib
應該是一個有效的函式庫檔案名稱,例如 libsomelib.a
或 somelib.lib
。對於 Makefile 產生器,這會在建置時產生錯誤,因為找不到對完整路徑的依賴關係。對於 Visual Studio 產生器 IDE 和 Xcode
產生器,這過去可以偶然地運作,因為 CMake 總是會拆分函式庫目錄,並要求連結器按名稱搜尋函式庫 (-lsomelib
或 somelib.lib
)。儘管使用 Makefiles 會失敗,但有些專案有類似的程式碼,且只使用 Visual Studio 和/或 Xcode 建置。此版本的 CMake 偏好直接將完整路徑傳遞給原生建置工具,在這種情況下會失敗,因為它沒有命名有效的函式庫檔案。
此政策決定如何處理看起來沒有命名有效函式庫檔案的完整路徑。此政策的 OLD
行為是將函式庫名稱從路徑中拆分出來,並要求連結器搜尋它。此政策的 NEW
行為是信任給定的路徑,並直接將其未經修改地傳遞給原生建置工具。
此政策在 CMake 2.6.1 版中引入。可以透過 cmake_policy()
或 cmake_minimum_required()
設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為根據定義 已棄用
,並可能在未來版本的 CMake 中移除。