Nous avons une base de code assez large. La grande majorité du code est compilé en utilisant qmake pour produire les makefiles. Cependant, certains sous-projets sont produits en exécutant des fichiers batch ou en exécutant d'autres programmes. J'aimerais pouvoir tout compiler en utilisant qmake, mais je n'arrive pas à comprendre comment faire pour que qmake exécute simplement un script.Exécution d'un programme/script à partir de QMake
Une chose que j'ai essayé utilise QMAKE_EXTRA_TARGETS dans mon dossier pro, comme ceci:
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
je puis avoir le fichier batch produits placeholder.cpp comme ceci:
# do the real work here
# ...
# create placeholder.cpp so qmake and nmake are happy
echo // dummy >> placeholder.cpp
Cela semble fonctionner correctement. Le problème est que c'est un peu hokey. Si je ne spécifie pas batch_runner.target (c'est-à-dire que je le laisse vide) ou ne placez pas placeholder.cpp dans SOURCES, alors le fichier batch ne sera jamais exécuté. C'est parce que qmake ne fait pas de batch_runner.commands l'action pour toute autre dépendance dans le Makefile.
Existe-t-il un meilleur moyen d'obtenir QMake pour construire un Makefile tel qu'un script est exécuté lorsque le Makefile s'exécute?
Intéressant. Cela fonctionne, mais la commande est exécutée lorsque 'qmake' est exécuté plutôt que lorsque 'nmake' est exécuté. Il arrive aussi d'être exécuté trois fois plutôt que la fois où il devrait vraiment être exécuté. –
Vous devrez peut-être ajouter une certaine portée pour vous assurer qu'elle n'est exécutée qu'une seule fois. –
J'ai juste ajouté la portée à l'exemple de sorte que la commande n'est exécutée qu'une seule fois lorsque qmake est exécuté. – pixelgrease