CMP0155¶
版本 3.28 新增。
支持时,对于至少使用 C++20 的目标中的 C++ 源文件,将对其进行模块导入扫描。
CMake 3.27 及更早版本假定 C++ 源文件不 import 模块。CMake 3.28 及更高版本倾向于假定使用 C++20 或更高版本的 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 版本中被移除。