CMP0163

在版本 3.30 中新增。

GENERATED 源文件属性现在可在所有目录中看到。

在 CMake 3.29 及更早版本中,GENERATED 源文件属性(与其他源文件属性一样)在每个目录中都具有独立的作用域。即使策略 CMP0118 允许在一个目录中标记为 GENERATED 的源文件在其他目录中使用,而无需手动将其再次标记为 GENERATED,但调用 get_property()get_source_file_property() 时仍不可看到 GENERATED 属性。

源文件是否生成是该源文件的全局全有或全无属性:一个源文件要么是生成的,要么不是。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 行为是 deprecated by definition,并在未来的 CMake 版本中移除。