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旨在实现跨平台和灵活性。它可以与Microsoft Visual Studio和Xcode兼容。
您可以在qmake手册中找到所有相关信息。
qmake根据项目文件中的信息生成Makefile。项目文件由开发人员创建,通常很简单,但对于复杂的项目,可以创建更复杂的项目文件。 qmake包含其他功能,以支持使用Qt进行开发,自动包括moc和uic的构建规则。 qmake还可以为Microsoft Visual studio生成项目,而无需开发人员更改项目文件。
为了
a) 它在幕后为你做了很多事情
b) 是的,参见a)
c) 是的,它确实调用了g++(但如果你有其他编译器,它也可以支持)
顺便提一句,这是真的直到Qt 5.x(包括5.x版本)。 现在Qt 6正在转向使用CMake。至少用于构建Qt本身,但似乎可以合理地期望将cmake推荐用于构建Qt应用程序,而不是qmake。特别是因为主要的qmake开发人员不再为Qt公司工作。 终于有一个行业标准工具了,而不是内部工具:-)
qbs
已经停止开发,您可以在https://www.qt.io/blog/2018/10/29/deprecation-of-qbs了解更多信息。 - David Faure
qmake
更像是configure
的替代品,而不是make
。 - Evan Teran