Mein erster Gedanke ist, zu versuchen, umzuschreiben
%Vor%, damit Sie kein Shell-Skript aufrufen müssen. Vielleicht können Sie alle Anweisungen in einer Zeile kombinieren:
%Vor%Wenn Sie beim Aufruf des Skripts nicht weiterkommen, suchen Sie wahrscheinlich nach PWD oder OUT_PWD. Aus der qmake Variablenreferenz
PWD
Diese Variable enthält den vollständigen Pfad zum Verzeichnis, in dem sich die qmake-Projektdatei (project.pro) befindet.
OUT_PWD
Diese Variable enthält den vollständigen Pfad zu dem Verzeichnis, in dem qmake das generierte Makefile platziert.
Der einzige Nachteil, der in der Dokumentation nicht erwähnt wird, ist, dass PWD, wenn Sie einen rekursiven qmake ausführen, sich darauf bezieht, woher die .pro-Datei der obersten Ebene gelesen wurde. Wenn Sie also qmake -r von {proj-root} ausführen, wenn sub / sub / sub / dir-proj.pro schließlich eingelesen wird, zeigt PWD immer noch auf {proj-root}.
Wenn Sie davon ausgehen, dass sich generate-version.sh im selben Verzeichnis befindet wie Ihre .pro-Datei auf der obersten Ebene, versuchen Sie Folgendes:
%Vor%Ich habe eine bessere und sauberere Lösung gefunden
%Vor%Die Variable _PRO_FILE_PWD _ ist seit qt 4.5 dokumentiert und enthält den Pfad zum Verzeichnis, in dem sich die verwendete Projektdatei befindet (enthält die .pro-Datei)
Um jedoch auf diese Variable für QMAKE_EXTRA_TARGETS zuzugreifen, muss QMAKE_VAR _ angehängt werden.
PWD
Gibt den vollständigen Pfad an, der zu dem Verzeichnis führt, das den Pfad enthält aktuelle Datei wird analysiert. Dies kann nützlich sein, um auf Dateien innerhalb zu verweisen der Quellbaum beim Schreiben von Projektdateien zur Unterstützung von Schattenerstellungen.
Ich benutze (Linux und g ++)
%Vor%definiert das Makro SVNVERSON als die svn-Version. Um von C ++ aus darauf zuzugreifen:
%Vor%Erklärung: In der Shell möchte ich diesen Aufruf sehen:
%Vor%Wie Sie sehen, sind auf der Shell-Ebene einige Escapes notwendig. In der .pro-Datei muss dann zweimal maskiert werden.
Tags und Links qmake