生成¶
此源文件是否作为构建或 CMake 过程的一部分生成。
版本 3.20 更改:在一个目录中开启 GENERATED
源文件属性后,关联的源文件可以在不同目录中被使用,而无需为其他目录范围手动设置该属性。此外,它现在只能设置为布尔值,并且一旦开启就不能关闭。请参阅策略 CMP0118
。
版本 3.30 更改:源文件是否生成是源的全局属性,要么全有要么全无。因此,GENERATED
源文件属性现在在所有目录中可见。请参阅策略 CMP0163
。
告诉内部 CMake 引擎源文件是由外部进程(例如另一个构建步骤或 CMake 本身)生成的。然后,此信息用于免除文件进行任何存在性或有效性检查。
任何文件如果
在构建期间通过执行
add_custom_command()
等命令创建被列为
add_custom_command()
或add_custom_target()
命令的BYPRODUCTS
之一,或者
都将被标记为 GENERATED
属性。
当作为 add_custom_command()
命令的 OUTPUT
创建的生成文件在同一目录范围(通常意味着相同的 CMakeLists.txt
文件)中显式列为任何目标的源文件时,CMake 将自动创建依赖关系,以确保在构建该目标之前生成该文件。
Makefile 生成器将在 make clean
期间删除 GENERATED
文件。
生成的源文件在某些 IDE 工具中可能会被隐藏,而在其他工具中可能会显示。对于 CMake 的 AUTOMOC
、AUTORCC
或 AUTOUIC
功能生成的源文件的特殊情况,AUTOGEN_SOURCE_GROUP
、AUTOMOC_SOURCE_GROUP
、AUTORCC_SOURCE_GROUP
和 AUTOUIC_SOURCE_GROUP
目标属性可能会影响生成的源文件在项目文件列表中的分组位置。