为什么Qt使用自己的make工具qmake?

Tre*_*ith 54 c++ qt qmake cross-platform

我刚开始使用Qt并注意到它使用了自己的make工具qmake.

  • 为什么Qt使用自己的make工具?
  • 有什么特别的东西阻止它使用标准的制作工具吗?
  • qmake是否调用GCC C++编译器?

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或其他).

  • QMake不会直接调用gcc.它创建特定于平台的make文件,然后*您将调用它们.这些make文件依次调用你似乎正在使用的编译器. (8认同)

小智 8

在我的观点中,qmake对于简单的项目来说很酷(你可以只是qmake -project; qmake; make),但是对于大型项目来说可怕而且没有足够的文档记录.特别是qmake的配置功能是一个笑话.

我所知道的最好的构建系统是CMake和Waf(基于Python).在我自己的Qt项目中,我使用CMake来完成这项工作.就像KDE家伙:)


Ron*_*lic 6

为了支持它的信号/插槽系统,Qt依赖于一个特殊的预处理器和编译器来生成执行大部分处理的中间对象.他们将此称为元对象编译器或MOC.

有关详细信息,请参见http://doc.trolltech.com/4.5/moc.html.

MOC(以及其他几个中间工具)与qmake; 它以您的原生格式(VC++,g ++等)生成makefile,它将MOC生成的中间文件以及所有源文件构建到最终的可执行文件中.


Bri*_*aro 5

qmake旨在跨平台和灵活.它可以与Microsoft Visual Studio和Xcode兼容.

您可以在qmake手册中找到所有内容.

qmake根据项目文件中的信息生成Makefile.项目文件由开发人员创建,通常很简单,但可以为复杂项目创建更复杂的项目文件.qmake包含支持Qt开发的其他功能,自动包含moc和uic的构建规则.qmake还可以为Microsoft Visual Studio生成项目,而无需开发人员更改项目文件.

  • =>所以它不是一个make工具,而是一个预制工具;) (6认同)