qtcreator对qt程序的编译过程是先“qmake” ,然后“构建(等价于make)”。
qtcreator右键点击项目 出现的 “执行qmake”和“构建” 两个选项其实就是运行 项目-》build->构建步骤 中的“qmake”和“make”步骤所对应的命令行命令。
从项目->build->构建步骤可以看出,构建过程中先用qmake生成makefile,构建(make)过程用make和前面产生的makefile生成目标程序的exe或者其他。make按makefile规则的运行过程中根据依赖会先调用moc.exe生成moc_*.cpp文件,然后是按正常C++编译过程进行C++预编译(宏替换),再然后是C++编译。也就是说moc生成moc_*.cpp代码是在C++编译器进行预编译之前!
C:/Qt/5.15.2/wasm_32/bin/qmake.exe C:\Qt\Examples\Qt-5.15.2\widgets\mainwindows\application\application.pro -spec wasm-emscripten "CONFIG+=qtquickcompiler" && E:/WebAssemblyTest/emsdk/emsdk/upstream/emscripten/emmake qmake_all
第一个命令表示用qmake 生成Makefile ,Makefile.Debug ,Makefile.Release三个文件
如果.pro中的CONFIG有release和debug参数,或者有debug_and_release参数,就会生成Makefile.Debug 、Makefile.Release,以及debug、release文件夹。否则Makefile.Debug会与Makefile合并,只会生成Makefile。
(这是qmake的工作,可以在.pro中用message($$CONFIG)来查看CONFIG变量的内容,qt生成一个Makefile就会输出一遍message内容,如果同时生成debug和release的makefile,message的内容就会在qt creator的概要信息窗口输出显示两遍,可以通过在message前加“!build_pass:”让message只运行一遍)
第二个命令表示用make执行Makefile中的qmake_all规则。从上面列出的Makefile文件可以看到qmake_all是空规则。也就是说默认情况下这条命令其实啥也没做。
可以在覆盖处,替换或调整make使用的工具:emmake 、nmake、cmake、mingw32-make等等