2009-08-07 26 views
5

Estoy usando qmake para generar MinGW32 Makefiles para una pequeña aplicación Qt C++ que estamos desarrollando. Mi problema: todas esas CPU de doble/cuádruple núcleo están sentadas sin hacer nada, mientras que solo un hilo está haciendo el edificio. Para paralelizar cosas intenté pasar --jobs 4 para hacer, pero el problema es que qmake genera un genérico makefile dentro del cual make se vuelve a llamar con -f.Opción GNU make --jobs en QMAKE

¿Es posible forzar qmake para agregar opciones para hacer al generar el archivo MAKE? ¿O tal vez hay otra forma de establecer la opción fuera de qmake por completo? No puedo editar ese Makefile específico ya que se autogenera en cada compilación.

+1

cuál es el problema en el funcionamiento de forma manual "hacen -j 5 "? – elcuco

+0

El problema es que make se llama de nuevo solo por directiva en Makefile y quita todas las banderas. –

Respuesta

18

Abusar $MAKE para pasar opciones no funciona en todos los casos. A menudo, (por ejemplo, en el script de configuración de Qt en Unix), está entre comillas dobles ("$MAKE") para permitir que el comando contenga espacios. Lo sé porque utilicé el mismo truco antes de que dejara de funcionar. Qt Soporte sugirió entonces (con razón) a utilizar $MAKEFLAGS como en

set MAKEFLAGS=-j4 
make 
2

El archivo Makefile genérico utiliza $(MAKE) al invocar make, por lo que puede sobrescribirlo utilizando variables de entorno. Algo así debe hacerlo:

qmake 
    make MAKE="mingw32-make -j4" 

reemplazar los valores de MAKE como se requiere por supuesto :)

3

Esto funciona para mí:

conjunto MAKE_COMMAND = mingw32-make -j% NUMBER_OF_PROCESSORS%

Cuestiones relacionadas