Qt 构建顺序(rcc -> uic -> moc -> 预处理器 -> 普通编译器)?

Qt building sequence (rcc -> uic -> moc -> preprocessor -> normal compiler)?

我想知道这些构建工具在 QT 项目中的调用顺序:
UIC - MOC - RCC - 预处理器 - 普通的 c++ 编译器(例如 Gcc)

第一步:

UIC 处理 *.ui 文件并生成 *.h 输出 MOC 处理 .h 文件(带有 Q_OBJECT 宏的文件)并生成 moc_.cpp 文件 RCC 处理 *.rc 文件并生成 *.cpp 文件

第二步:

所有你写的.h/.cpp文件和所有生成的.h/.cpp文件都被处理为"normal" 由您的 "normal" 编译器编写的源代码。

要获得完整的答案,您应该知道 qMake 在这些文件之间创建依赖关系。 例如,如果 "foo.h" 文件包含 "Q_OBJECT" 宏,MOC 将生成 "moc_foo.cpp" 文件。 但是 qMake 会添加一个依赖项:"moc_foo.cpp" 将被标记为依赖于 "foo.h"。 所以,如果你修改 "foo.h" 文件,你的编译器知道 MOC 应该在这个文件上重新 运行 以产生新版本的 "moc_foo.cpp"