QMake Pre-Build-Schritt vor jeder Kompilierung
Es gibt mehrere Fragen zu SO, wie ein vorab erstellter Schritt für erstellt werden kannqmake
Das kann ich damit in meinem.pro
Datei:
versionTarget.target = ../VersionData/versioning.h
versionTarget.depends = FORCE
win32: versionTarget.commands = cd $PWD; python.exe ./version_getter.py -p $TARGET
else: versionTarget.commands = cd $PWD; python ./version_getter.py -p $TARGET
PRE_TARGETDEPS += ../VersionData/versioning.h
QMAKE_EXTRA_TARGETS += versionTarget
Das Problem ist nun, dass dieser Ansatz an sich kein Build-Schritt ist, sondern nur ein weiteres Build-Ziel-j
Flag konfiguriert fürmake
Es führt mein Skript ausparallel mit den anderen Build-Jobs. Das ist sehr schlecht, weil mein Skript eine Header-Datei erstellt / aktualisiert - Änderungen während der Kompilierung sind nicht akzeptabel.
Also, gibt es sowieso ich kann dieses Skript schon mal ausführen lassenirgendein Kompilierung ist gelaufen? Ich weiß, dass ich ein anderes Skript erstellen und das aufrufen kannversion_getter.py
undqmake
Dies ist jedoch nicht wünschenswert, da das Kompilieren über die Befehlszeile und nicht über Qt Creator erfolgen muss.
Das Ganze.pri
Datei, die von jedem meiner Unterprojekte enthalten ist, ist unten:
CONFIG += thread
QT += core \
gui
versionTarget.target = ../VersionData/versioning.h
versionTarget.depends = FORCE
win32: versionTarget.commands = cd $PWD; python.exe ./version_getter.py -p $TARGET
else: versionTarget.commands = cd $PWD; python ./version_getter.py -p $TARGET
PRE_TARGETDEPS += ../VersionData/versioning.h
QMAKE_EXTRA_TARGETS += versionTarget
DEPENDPATH += ../VersionData
INCLUDEPATH += ../VersionData
HEADERS += ../VersionData/versioning.h
UI_HEADERS_DIR = ${_PRO_FILE_PWD_}/include/Qui
DESTDIR = $(SYREN_PATH)
!win32-msvc {
QMAKE_CXXFLAGS += -std=c++0x
}
Dies führt jedoch immer noch zu demselben parallelen Verhalten. Ich dachte, es könnte an meiner Verwendung von liegenccache
, aber das Ausschalten machte keinen Unterschied (außer natürlich viel langsamer zu sein).