CMP0018¶
忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS
變數。
CMake 2.8.8 及更早版本在編譯 SHARED
和 MODULE
函式庫中的原始碼時,會使用未公開的 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
屬性,並對 SHARED
和 MODULE
函式庫使用修改後的 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 中移除。