CMP0018¶
忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS
变量。
CMake 2.8.8 及更低版本使用未记录的 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS
平台变量中的值编译 SHARED
和 MODULE
库中的源代码。该变量包含用于编译共享库对象的平台特定标志。通常,它包含诸如 -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
行为根据 deprecated by definition
定义已弃用,并且可能会在未来的 CMake 版本中被移除。