Ich erkannte, dass meine frühere Frage ein wenig verwirrt war bezüglich der Regeln und Abhängigkeiten. Die folgende .pro-Datei erzeugt ein Makefile, das korrekt funktioniert, wenn die Quelldateien im Verzeichnis 'generated' zum Zeitpunkt der Ausführung von qmake vorhanden sind.
%Vor%Aber wenn qmake läuft, erzeugt es nur ein Makefile und PRE_TARGETDEPS & amp; QMAKE_EXTRA_UNIX_TARGETS hilft mir nicht. Wie kann ich qmake dazu bringen, ein Makefile zu generieren, das den Inhalt von generated / zu SOURCES hinzufügt?
Sie müssen dies möglicherweise in zwei Durchgängen tun.
Fügen Sie in Ihrer qmake-Datei die folgende Zeile hinzu:
%Vor%Fügen Sie am Ende Ihres code_generator-Skripts die Quellen der generated.pri-Datei hinzu (bash für das Beispiel, aber die Idee ist für fast alle Sprachen gleich):
%Vor%Beim ersten Ausführen der qmake-Datei wird generated / generated.pri vermutlich leer sein. Wenn Sie make ausführen, wird die generated.pri-Datei gefüllt. Beim zweiten Mal wird die make-Datei neu erstellt (als geänderte Quell-PRI-Datei) und anschließend erneut kompiliert. Sie können vielleicht mit anderen Befehlen herumspielen, die die zweite Stufe für Sie erledigen würden.
Ich hatte das gleiche Problem gerade jetzt, aber für eine einfachere Verwendung nur einer einzigen generierten Datei. Dafür habe ich einen einfacheren Weg gefunden, GENERATED_SOURCES anstelle von SOURCES zu verwenden:
%Vor%Wahrscheinlich könnte man das in eine qmake-Schleife schieben und die richtigen Ziele für mehrere Dateien erzeugen.
Ich habe eine Lösung gefunden, von der ich glaube, dass sie robust und allgemein ist, die darauf angewiesen ist, dass qmake
ein GNU-Makefile erzeugt.
Angenommen, wir haben alle zusätzlichen SOURCES
und HEADERS
Zuweisungen in einer Datei namens Makefile.pri
, die generiert wird, indem das Skript generate_Makefile.pri.sh
ausgeführt wird, das auch die in Makefile.pri
genannten Quellen und / oder Header generiert. .
Wir möchten, dass diese Datei automatisch und zuverlässig vom Build-System selbst erzeugt wird, um in die .pro
-Datei aufgenommen zu werden, so dass qmake
seinen Inhalt berücksichtigen und das Makefile mit den richtigen Abhängigkeiten generieren kann. p>
Das müssen wir dann in unsere Datei .pro
einfügen.
Auf diese Weise:
Makefile.pri
gibt, wird es erstellt; Makefile.pri
erstellt oder aktualisiert wird, wird qmake
erneut ausgeführt und berücksichtigt dessen Inhalt, wobei Makefile
erneut generiert wird.
Wie gesagt, hängt davon ab, dass qmake
ein GNU-Makefile generiert, aber derselbe Ansatz könnte meines Erachtens angepasst werden, um auch mit anderen Ziel-Build-Systemen zu funktionieren.