Wie finden Sie das source-Verzeichnis qmake?
Fügte ich
version.target = version.h
version.commands = bash generate-version.sh
QMAKE_EXTRA_TARGETS += version
PRE_TARGETDEPS += version.h
dem Projekt, aber es versucht zu laufen "generate-version.sh" im Ziel-Verzeichnis:
make: Leaving directory `.../qqq-build-desktop'
make: Entering directory `.../qqq-build-desktop'
Makefile:236: warning: overriding commands for target `version.h'
Makefile:233: warning: ignoring old commands for target `version.h'
bash generate-version.sh
bash: generate-version.sh: No such file or directory
make: Leaving directory `.../qqq-build-desktop'
Es ist $$DESTDIR, aber ich sehe nicht $$SRCDIR. Wie finden Sie das Projekt-Verzeichnis qmake (oder wie man diese umschreiben)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Erster Gedanke ist, zu versuchen, zu umschreiben,
so nicht zu haben, die zum aufrufen eines shell-Skript. Vielleicht können Sie kombinieren Sie alle Anweisungen in einer Zeile:
Wenn Sie stecken geblieben sind, mit Berufung auf die Schrift-vermutlich PWD oder OUT_PWD sind, was Sie suchen. Aus der qmake Variable Referenz
Die einzige Einschränkung, die nicht in der Dokumentation erwähnt ist, dass, wenn Sie tun, eine rekursive qmake, PWD bezieht sich auf die Stelle der obersten Ebene .pro Datei gelesen wurde, aus. Also, wenn Sie ausführen von qmake -r aus {proj-root}, wenn sub/sub/sub/dir-proj.pro endlich Lesen, PWD wird immer noch auf {proj-root}.
Unter der Annahme, dass generate-version.sh ist im selben Verzeichnis wie Ihre top-Niveau .pro-Datei, können Sie versuchen:
Fand ich eine bessere und sauberere Lösung
Die variable _PRO_FILE_PWD_ dokumentiert seit qt 4.5 und enthält den Pfad zum Verzeichnis, welches die Projekt-Datei in Gebrauch (Enthält die .pro Datei)
Aber der Zugriff auf diese variable für QMAKE_EXTRA_TARGETS, QMAKE_VAR_ angefügt werden muss.
$$PWD
zu${QMAKE_VAR__PRO_FILE_PWD_}
es nicht kompiliert werden kann. Makefile enthält wörtliche${QMAKE_VAR__PRO_FILE_PWD_}
.QMake version 2.01a
jetzt (ich weiß nicht, die version zu der Zeit war ich es testen).Nutze ich (Linux und g++)
definiert das makro SVNVERSON werden die svn-version.
Zugriff von C++:
Erklärung: Auf die Schale möchte ich sehen, dieser Aufruf:
Als Sie sehen, einige entweicht notwendig sind, auf shell-Ebene. In der .Profil hat es dann geflüchtet zu sein zweimal.
Dieser funktioniert und ist einfach zu verstehen.