Tre*_*ith 54 c++ qt qmake cross-platform
我刚开始使用Qt并注意到它使用了自己的make工具qmake.
Tho*_*omi 56
Qt使用qmake透明地支持Qt的各种插件,包括"moc,元对象编译器"(提供信号和插槽),"uic,ui编译器"(从.ui设计器文件创建头文件),"rcc,资源编译器"(编译资源).
没有什么可以阻止你使用你想要的任何构建系统.然而,它还有很多工作要做.例如,您需要在包含具有信号或槽的类的每个头文件上运行"moc".一般情况下,不建议使用,特别是对刚刚开始使用Qt的人.
QMake不直接调用g ++/gcc.相反,qmake会在您当前的平台上创建本机make文件.在linux下它创建了标准的GNU make文件,在windows下它可以生成visual studio make文件,在Mac OS X下它可以生成XCode项目文件.然后,您调用本机构建系统(GNU make,或MS NMake,或xcodebuild或其他),这将调用您的本机编译器(g ++/gcc或其他).
小智 8
在我的观点中,qmake对于简单的项目来说很酷(你可以只是qmake -project; qmake; make),但是对于大型项目来说可怕而且没有足够的文档记录.特别是qmake的配置功能是一个笑话.
我所知道的最好的构建系统是CMake和Waf(基于Python).在我自己的Qt项目中,我使用CMake来完成这项工作.就像KDE家伙:)
为了支持它的信号/插槽系统,Qt依赖于一个特殊的预处理器和编译器来生成执行大部分处理的中间对象.他们将此称为元对象编译器或MOC.
有关详细信息,请参见http://doc.trolltech.com/4.5/moc.html.
MOC(以及其他几个中间工具)与qmake; 它以您的原生格式(VC++,g ++等)生成makefile,它将MOC生成的中间文件以及所有源文件构建到最终的可执行文件中.