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

问题描述 投票:54回答:5

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

  • 为什么Qt使用自己的make工具?
  • 有什么特别的东西阻止它使用标准的制作工具吗?
  • qmake是否会调用GCC C ++编译器?
c++ qt cross-platform qmake
5个回答
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家伙:)


6
投票

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

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

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


5
投票

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

你可以在qmake Manual找到它。

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


3
投票

为了

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

b)是的,见a)

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

© www.soinside.com 2019 - 2024. All rights reserved.