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 行为按定义已弃用 by definition,并可能在未来的 CMake 版本中删除。