QMake and make with parallel jobs [bug?]
is seems like theres is a bug in the Makefile generation of qmake. When running make after qmake as usual, I get no errors, but running it with multiple jobs, lets say "make -j3", I get the following error:
@make: *** No rule to make target
../../../ui/ui_something.h', needed bysomething.o'. Stop.
make: *** Waiting for unfinished jobs....@
It looks like, that the uic does not finish before the other parallel compile jobs start. Is there a way to fix this (I mean not by starting make twice)?
Thanks in advance!
As far as I know, qmake run before make, and while qmake work is not done, make don't start.
-j key does not affect on qmake.
No, of course. But qmake seems to write the uic calls into the makefile that make processes. Using make with the -j argument parallelizes the execution of the makefile to a certain extend. But make does not seem to care about the uic calls correctly, because it executes the following compile commands without waiting for the uic calls to be finished (which result in the upper error message).
This sounds like a bug to me. Have you considered filing it in our "bugtracker":http://bugreports.qt.nokia.com/ ?
created a new issue:
Not sure whether this is the same problem, but did you try CONFIG+=ordered?
In general, if you need high parallelity in your builds, CMake is much more powerful than QMake.
I use qmake and make -j4 for ages, never had that problem. I read about a similar problem somewhere, there were some unnecessary #include-s of the same files across the project, and that made some trouble. I don't know if it has anything to do with your problem.
I'm using qmake together with make -j8 on several projects for years without any hazzle (including speeding up compilation of my project in Creator).
For me it's CMake that causes problems with parallel builds. But since I rarely use that, it's not a real issue for me.