CMP0018

忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 變數。

CMake 2.8.8 及更早版本在編譯 SHAREDMODULE 函式庫中的原始碼時,會使用未公開的 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 平台變數的值。該變數包含了編譯共享函式庫物件所需的平台特定旗標。通常它會包含像是 -fPIC 的位置無關程式碼旗標,以及在某些平台上需要的其他旗標。CMake 2.8.9 及更高版本則偏好使用 POSITION_INDEPENDENT_CODE 目標屬性來決定哪些目標應該是位置無關的,並且使用新的未公開平台變數來選擇旗標,完全忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS

兩種方法預設都會產生相同的編譯旗標,但是如果專案修改了 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 的原始值,此政策將決定要使用哪種方法。

此政策的 OLD 行為是忽略所有目標的 POSITION_INDEPENDENT_CODE 屬性,並對 SHAREDMODULE 函式庫使用修改後的 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 值。

此政策的 NEW 行為是無論是否修改,都忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 並遵從 POSITION_INDEPENDENT_CODE 目標屬性。

此政策在 CMake 2.8.9 版中引入。可以使用 cmake_policy()cmake_minimum_required() 設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。

注意

政策的 OLD 行為 依定義已棄用,並可能在未來版本的 CMake 中移除。