1、moc 全称是 Meta-Object Compiler,即“元对象编译器”。
2、因为 Qt 不是使用的标准 C++ 语言,因此 Qt 在将源码交给标准 C++ 编译器(如 gcc)之 前,需要先把扩展的语法去除掉。完成这一操作的就是 moc。
3、moc 执行步骤
Qt 程序编译之前,先使用 moc 分析 C++ 源文件,若在头文件中包含了宏 Q_OBJECT, 则会生成另外一个包含了 Q_OBJECT 宏实现代码的 C++ 源文件,这个新文件的名字是 在原文件名之前加上 moc_ 构成。这个新文件同样会进入编译系统,最终被链接到二进制 代码中去,因此我们在 Qt 构建后的文件夹中,见到 moc_*.o 和 moc_*.cpp 的文件,就是 由 moc 生成的。注意:新文件不会“替换”掉旧的文件,而是与原文件一起编译,另外, moc 的执行是在预处理器之前