CMP0018

忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 变量。

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