CMP0018¶
忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 变量。
SHARED 和 MODULE 库中的 CMake 2.8.8 及更低编译源使用未记录的 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS 平台变量的值。该变量包含为共享库编译对象所需的特定于平台的标志。通常它包括一个标志,例如用于位置无关代码的“-fPIC”,但也包括某些平台所需的其他标志。 CMake 2.8.9 及更高版本更喜欢使用 POSITION_INDEPENDENT_CODE 目标属性来确定哪些目标应该与位置无关,并使用新的未记录的平台变量来选择标志,同时完全忽略 CMAKE_SHARED_LIBRARY_<Lang>_FLAGS。
这两种方法的默认值都会产生相同的编译标志,但如果项目从其原始值修改了“CMAKE_SHARED_LIBRARY_<Lang>_FLAGS”,则此策略决定使用哪种方法。
此策略的“旧”行为是忽略所有目标的 POSITION_INDEPENDENT_CODE 属性,并为“共享”和“模块”使用修改后的“CMAKE_SHARED_LIBRARY_<Lang>_FLAGS”值`图书馆。
此策略的“新”行为是忽略“CMAKE_SHARED_LIBRARY_<Lang>_FLAGS”,无论它是否被修改,并遵守 POSITION_INDEPENDENT_CODE 目标属性。
此策略是在 CMake 版本 2.8.9 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLD 或 NEW。
备注
策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。