CMP0155¶
版本 3.28 新增。
C++20或更高版本的Target中的C++源文件会在支持的情况下被扫描以查找导入。
CMake 3.27及更早版本假定C++源文件不import
模块。CMake 3.28及更高版本倾向于假定使用C++20或更高版本的Target中的C++源文件可能会import
模块,并且必须在编译前进行扫描,除非明确禁用。此策略为不使用模块但使用C++20或更高版本的项目提供兼容性,这些项目尚未更新以关闭扫描,例如通过CMAKE_CXX_SCAN_FOR_MODULES
变量。有关C++模块支持的更多详细信息,请参阅cmake-cxxmodules(7)
手册。
此策略的OLD
行为是假定C++ 20及更新的源文件不导入模块。此策略的NEW
行为是假定C++ 20及更新的文件可能会导入模块,如果编译器能够理解扫描其依赖项,并且需要进行扫描。
此策略在CMake版本3.28中引入。它可以由cmake_policy()
或cmake_minimum_required()
设置。如果未设置,CMake*不*发出警告,并使用OLD
行为。
注意
根据定义,策略的OLD
行为是不推荐
,并且可能会在未来的CMake版本中被移除。