2009-08-07 10 views
5

Ich benutze qmake, um MinGW32 Makefiles für eine kleine Qt C++ App zu generieren, die wir entwickeln. Mein Problem: All diese Dual/Quad-Core-CPUs sitzen dort leer, während nur ein Thread das Gebäude macht. Um Dinge parallelisieren zu können, habe ich versucht, --jobs 4 zu übergeben, aber das Problem ist, dass qmake ein generisches Makefile erzeugt, in dem make erneut mit -f aufgerufen wird.GNU make --jobs Option in QMAKE

Ist es möglich, qmake zu zwingen, Optionen hinzuzufügen, die beim Generieren des Makefiles gemacht werden? Oder gibt es eine andere Möglichkeit, die Option außerhalb von qmake insgesamt zu setzen? Ich kann dieses spezifische Makefile nicht bearbeiten, da es bei jedem Build automatisch generiert wird.

+1

was das Problem manuell in Laufen „machen -j 5 "? – elcuco

+0

Das Problem ist, dass make wegen der Direktive in Makefile von selbst aufgerufen wird und alle Flags ablegt. –

Antwort

18

$MAKE Abusing Optionen nicht passieren in allen Fällen. Häufig (z. B. im Konfigurationsskript von Qt unter Unix) ist es in Anführungszeichen ("$MAKE") eingeschlossen, damit der Befehl Leerzeichen enthalten kann. Ich weiß, weil ich denselben Trick benutzt habe, bevor er aufgehört hat zu arbeiten. Qt Unterstützung schlug dann (zu Recht) $MAKEFLAGS wie in

set MAKEFLAGS=-j4 
make 
2

Das generische Makefile verwendet $(MAKE) beim Aufruf von make, so dass Sie es mit Umgebungsvariablen überschreiben können. So etwas sollte es tun:

qmake 
    make MAKE="mingw32-make -j4" 

Ersetzen Sie die Werte von MAKE als natürlich erforderlich :)

3

zu verwenden Dies ist für mich funktioniert:

Satz MAKE_COMMAND = mingw32-make -j% NUMBER_OF_PROCESSORS%