Tenemos una base de código bastante grande. La gran mayoría del código se compila utilizando qmake para producir los archivos make. Sin embargo, hay algunos subproyectos que se obtienen ejecutando archivos por lotes o ejecutando otros programas.Ejecutando un programa/script de QMake
Me gustaría poder tener todo compilado usando qmake, pero no puedo entender cómo hacer que qmake simplemente ejecute un script.
Una cosa que he intentado es usar QMAKE_EXTRA_TARGETS en mi pro archivo, así:
TEMPLATE = lib
SOURCES = placeholder.cpp
CONFIG += no_link staticlib
batch_runner.target = placeholder.cpp
batch_runner.commands = my_batch_file.bat
QMAKE_EXTRA_TARGETS = batch_runner
entonces tengo que tener el archivo por lotes de productos placeholder.cpp así:
# do the real work here
# ...
# create placeholder.cpp so qmake and nmake are happy
echo // dummy >> placeholder.cpp
Esto parece funcionar bien. El problema es que es algo cursi. Si no especifico batch_runner.target (es decir, lo dejo en blanco) o no coloque placeholder.cpp en SOURCES, el archivo por lotes nunca se ejecutará. Esto es porque qmake no está haciendo que batch_runner.com solicite la acción para cualquier otra dependencia en el archivo Makefile.
¿Hay alguna forma mejor de hacer que QMake construya un archivo Makefile de modo que se ejecute un script cuando se ejecuta el archivo Makefile?
Interesante. Eso funciona, pero el comando se ejecuta cuando se ejecuta 'qmake' en lugar de cuando se ejecuta 'nmake'. También sucede que se ejecuta tres veces en lugar de una vez realmente debería ejecutarse. –
Es posible que tenga que agregar un alcance para asegurarse de que solo se ejecute una vez. –
Acabo de agregar el alcance al ejemplo, por lo que el comando se ejecuta solo una vez cuando se ejecuta qmake. – pixelgrease