CMP0163

3.30 版本新增。

GENERATED 源文件属性现在对所有目录可见。

在 CMake 3.29 及更早版本中,GENERATED 源文件属性与其他源文件属性一样,在每个目录中是单独作用域的。尽管策略 CMP0118 允许在一个目录中标记为 GENERATED 的源文件在其他目录中使用,而无需手动再次将其标记为 GENERATED,但 GENERATED 属性仍然对 get_property()get_source_file_property() 调用不可见。

一个源文件是否是生成的,是一个关于源的“全有或全无”的全局属性:一个源要么是生成的,要么不是。CMake 3.30 及更高版本倾向于将 GENERATED 源文件属性视为全局作用域。一旦在一个目录中设置,它将立即对其他目录中的 get_property()get_source_file_property() 调用可见。此策略为尚未更新以适应此行为的项目提供了兼容性。

此策略的 OLD 行为是 GENERATED 源文件属性仅在设置它的目录中可见。此策略的 NEW 行为是允许 GENERATED 源文件属性在任何目录中设置后对所有目录可见。此外,此策略的 NEW 行为包含了策略 CMP0118NEW 行为:GENERATED 属性只能设置为布尔值,并且一旦开启就不能关闭。

此策略引入于 CMake 版本 3.30。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake *不会* 警告,并使用 OLD 行为。

注意

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