qmake pre-build-Schritt, bevor Sie JEDE Zusammenstellung

Gibt es mehrere Fragen auf, SO über, wie man erstellen Sie eine pre-build-Schritt für qmake ich tun kann, mit diesem 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

Nun, das problem ist, dass dieser Ansatz nicht um einen build-Schritt per se, sondern nur eine andere build-Ziel, also wenn ich die -j - flag konfiguriert für make es läuft mein script in parallel mit der anderen build-jobs. Das ist sehr schlecht, weil mein Skript erstellt/aktualisiert eine header-Datei - dass die Veränderung Teil des Weges durch die Zusammenstellung ist nicht akzeptabel.

So, gibt es trotzdem kann ich dieses Skript ausgeführt, bevor alle Zusammenstellung ran? Ich weiß, ich kann erstellen Sie ein weiteres Skript und rufen Sie die version_getter.py und qmake in der Reihenfolge, aber dies ist nicht wünschenswert, da hätte ich zum kompilieren von der Befehlszeile aus, anstatt innerhalb von Qt Creator.


Update

Den kompletten .pri - Datei enthalten, die von jedem meiner sub-Projekten unter:

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
}

Aber dies führt immer noch in die gleiche parallele Verhalten. Ich dachte, es kann schon durch meine Verwendung von ccachesondern ihn auszuschalten, machte keinen Unterschied (außer dass Sie viel langsamer natürlich).

InformationsquelleAutor der Frage cmannett85 | 2013-04-07

Schreibe einen Kommentar