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版本中被移除。