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

时间:2009-09-02 15:52:23

标签: c++ qt cross-platform qmake

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

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

6 个答案:

答案 0 :(得分: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或其他)。

答案 1 :(得分:8)

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

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

答案 2 :(得分:6)

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

有关详细信息,请参阅Qt 5 Documentation: Using the Meta-Object Compiler

MOC(以及其他一些中间工具)与qmake一起使用;一个构建自动化工具,它以您的本机格式(VC ++,g ++等)生成Makefile,它将MOC生成的中间文件以及所有源文件构建到最终的可执行文件中。

答案 3 :(得分:5)

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

您可以在qmake Manual中找到所有内容。

  

qmake基于生成Makefile   项目文件中的信息。   项目文件由。创建   开发人员,通常很简单,但是   更复杂的项目文件可以   为复杂的项目创建。 QMAKE   包含其他功能   用Qt支持开发,   自动包括构建规则   对于moc和uic。 qmake也可以   为Microsoft Visual生成项目   工作室,无需开发人员   更改项目文件。

答案 4 :(得分:3)

按顺序

a)因为它为你做了很多幕后工作

b)是,见a)

c)是的,它确实调用了g ++(但如果你有它们可以支持其他编译器)

答案 5 :(得分:1)

顺便说一句,在包括Qt 5.x之前都是如此。 Qt 6现在改用CMake了。至少对于构建Qt本身而言,但是可以合理地预期将建议使用cmake来构建Qt应用程序本身而不是qmake。特别是因为首席qmake开发人员不再为Qt公司工作。 最后是一种行业标准工具,而不是内部工具:-)