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 版本中引入。在 CMake 4.0 版本中移除之前,可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告,并使用 OLD
行为。