CMP0018¶
警告
此策略的 OLD 行为在 CMake 4.0 版本中已被移除。此策略必须通过调用 cmake_minimum_required() 或 cmake_policy() 来设置为 NEW。
忽略 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 版本。在 4.0 版本移除之前,可以通过 cmake_policy() 或 cmake_minimum_required() 设置。如果未设置,CMake 会发出警告并使用 OLD 行为。