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