CMP0118

在 3.20 版本中添加。

GENERATED 源文件可以在不同目录间使用,无需手动标记。

在 CMake 3.19 及更早版本中,GENERATED 源文件属性与其他源文件属性一样,在每个目录中是独立作用域的。如果一个源文件在一个目录中生成,项目必须在另一个目录中手动设置 GENERATED 属性才能使用该文件。

源文件是否生成是该源文件的一个全局属性,要么生成,要么不生成。CMake 3.20 及更高版本倾向于允许在一个目录中生成的源文件在其他目录中使用,而无需手动将其标记为 GENERATED。此外,GENERATED 属性现在只能设置为布尔值,并且一旦开启就不能关闭。本策略为尚未更新以适应此行为的项目提供了兼容性。

本策略的 OLD 行为是只允许在 GENERATED 属性已开启的目录中使用生成的文件。本策略的 NEW 行为是允许在其他目录中使用生成的文件,而无需为这些目录明确开启 GENERATED 属性。

版本 3.30 新增: 策略 CMP0163 额外地使 GENERATED 源文件属性在其他目录中对 get_property()get_source_file_property() 调用可见。

此策略在 CMake 3.20 版本中引入。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 会在使用非布尔值设置 GENERATED 属性时发出警告,并使用 OLD 行为。

注意

策略的 OLD 行为根据定义已被弃用,并可能在 CMake 的未来版本中移除。