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