Why is jom called with "qmake all", and what does it mean?
-
I am trying to find out why my autodetected MSVC 2015 kit for Qt 5.9.4 fails miserably in Qt Creator.
I am using the kit as it was autodetected. Here is the output of an attempt to build a project that builds without any problem on my MinGW kit:10:08:14: Running steps for project lpad_widgets... 10:08:14: Starting: "C:\Qt\5.9.4\msvc2015\bin\qmake.exe" C:\sources\svcs\ent\lpad\frei\widgets\lpad_widgets.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug" 10:08:14: The process "C:\Qt\5.9.4\msvc2015\bin\qmake.exe" exited normally. 10:08:14: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" qmake_all Usage: jom @commandfile jom [options] [/f makefile] [macro definitions] [targets] nmake compatible options: /A build all targets /D display build information /E override environment variable macros /F <filename> use the specified makefile /G display included makefiles /H show help /I ignore all exit codes /K keep going - build unrelated targets on error /N dry run - just print commands /NOLOGO do not print logo /P print makefile info /R ignore predefined rules and macros /S silent mode /U print content of inline files /L same as /NOLOGO /W print the working directory before and after other processing /X <filename> write stderr to file. /Y disable batch mode inference rules jom only options: /DUMPGRAPH show the generated dependency graph /DUMPGRAPHDOT dump dependency graph in dot format /J <n> use up to n processes in parallel /KEEPTEMPFILES keep all temporary files /VERSION print version and exit Error: unknown command line option '"' in arguments: '/"--keep-going"', 'qmake_all'
The only issue displayed with my kit is the lack of a debugger. It has the correct compiler and Qt version set up for sure.
Note that I am fully able to build my project with a correctly configured command line and the commands
qmake lpad_widgets.pro nmake
Question:
- Why is jom called, and not nmake?
- What is the "qmake all" parameter, and where does it come from? I couldn't find it anywhere in my project or kit configuration.
-
@Asperamanca jom.exe is another build tool which can compile several files in parallel. This way the build is much faster if you have more than one core. Check your kit in QtCreator, there must be a checkbox to activate/deactivate jom.
-
@jsulm said in Why is jom called with "qmake all", and what does it mean?:
@Asperamanca jom.exe is another build tool which can compile several files in parallel. This way the build is much faster if you have more than one core. Check your kit in QtCreator, there must be a checkbox to activate/deactivate jom.
I don't see any options in any kit related to jom. If you find something, please give me a keyword to look for.
-
@Asperamanca Go to "Build & Run" on the "General" page at the bottom there is "Use jom instead of nmake" checkbox...
-
Thanks for that.
Now nmake is called with the mysterious "qmake_all" option, which it doesn't know what do do about, either.Any ideas on that?
-
@Asperamanca Try to delete the build folder, run qmake and build
-
@Asperamanca said in Why is jom called with "qmake all", and what does it mean?:
qmake_all
Without deeper knowing about this, this is just a target in your makefile that execute some steps.
If your Makefile does not contains this target, then it is maybe created with another/older
qmake
version.Try cleaning the build folder (and maybe deleting the
*.pro.user
) to build again from a clean state.Regards
Edit: @jsulm was faster :)
-
Indeed, my makefile includes the line:
qmake_all: FORCE
When I delete and regenerate the makefile, it's there again. No other files in my whole source tree contain the word "qmake_all", but it is contained within qmake.exe, so it seems to be some kind of hardcoded keyword.
-
@Asperamanca said in Why is jom called with "qmake all", and what does it mean?:
qmake_all: FORCE
If this is in your Makefile then it should work. This is what qmake puts into Makefile by default. What exact error do you get now with nmake?
-
14:40:49: Running steps for project lpad_widgets... 14:40:49: Starting: "C:\Qt\5.9.4\msvc2015\bin\qmake.exe" C:\sources\svcs\ent\lpad\frei\widgets\lpad_widgets.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug" 14:40:49: The process "C:\Qt\5.9.4\msvc2015\bin\qmake.exe" exited normally. 14:40:49: Starting: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe" qmake_all Microsoft (R) Program Maintenance Utility Version 14.00.24210.0 Copyright (C) Microsoft Corporation. All rights reserved. NMAKE : fatal error U1065: invalid option '"' Stop. 14:40:49: The process "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe" exited with code 2. Error while building/deploying project lpad_widgets (kit: Desktop Qt 5.9.4 MSVC2015 32bit2) The kit Desktop Qt 5.9.4 MSVC2015 32bit2 has configuration issues which might be the root cause for this problem. When executing step "qmake" 14:40:49: Elapsed time: 00:00.
I start to suspect that Creator has issues with double quotes...
-
@Asperamanca said in Why is jom called with "qmake all", and what does it mean?:
I am trying to find out why my autodetected MSVC 2015 kit for Qt 5.9.4 fails miserably in Qt Creator.
First test: Use this kit to create a brand new project (such as a Qt Widgets Application) and build that without any modifications. Does that work? If not, then the problem is in your kit or Qt Creator. Otherwise, the problem is in your lpad_widgets project.
@Asperamanca said in Why is jom called with "qmake all", and what does it mean?:
Indeed, my makefile includes the line:
qmake_all: FORCEThis means when nmake or jom or mingw32-make is started with the qmake_all argument, it will run everything under the target called "FORCE". Note that many other lines have FORCE too, not just qmake_all.
More info on how to FORCE is commonly used in Makefiles: https://www.gnu.org/software/make/manual/html_node/Force-Targets.html (Note: This is Section 4.7 in the document though, so you might need to read Sections 4.1- 4.6 to fully understand it)
-
Thanks for all your input. I dug my own grave here:
As a temporary workaround for this issue, I started Creator via a batch file that sets some variables, and since that was my normal desktop link, I wasn't really aware of it anymore (I created that workaround years ago, long before the issue was posted).
One of the variable was "--keep-going"...which of course MSVC doesn't understand...