Qt元对象编译器MOC(Meta-Object Compiler)

Qt 到底是不是一种"新"的编程语言,是标准的c++? SLOT SIGNAL emit 都是标准 C++ 不存在的.

其实它实质上是一个跨平台的c++类库,使用标准C++编写的类库,QT 对标准C++进行了扩展,引入了一些新的概念,比如信号槽,对象属性等

QT的元对象编译器(Meta-Object Compiler, MOC)是一个预处理器,在源程序编译前,先将这些QT特性的程序转换为标准的C++兼容的形式,然后再有C++编译器进行编译。

Qt 程序 编译时,如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。
这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。
这个新的文件同样将进入编译系统,与原文件一起参与编译处理最终被链接到二进制代码中去。

这也就是Qt编译会比标准c++要慢, 就是 因为经过了元对象编译这一步,然后在进行标准的C++ 编译,所以要耗时.

你可能感兴趣的:(配置-编译-打包,Compiler))