Ich arbeite an einem multi-ausführbaren QT-Projekt mit qmake in Verbindung mit QT Creator. Jede ausführbare Datei hat ihre eigene .pro-Datei, die alle in einer übergreifenden .pro-Datei enthalten sind (template = subdirs). Jede einzelne .pro-Datei enthält auch eine gemeinsame .pri-Datei, die DESTDIR so setzt, dass alle ausführbaren Dateien am selben Ort landen. Dieses DESTDIR hängt davon ab, ob es als Debug oder Release kompiliert wird. Das hat wunderbar funktioniert, bis wir eine Sammlung ausführbarer Dateien über ein anderes Unterverzeichnis .pro unter dem übergreifenden hinzugefügt haben. Das gesamte Setup sieht ungefähr so aus:
Wenn Sie eine frisch ausgecheckte Kopie haben, können Sie qmake ausführen und alles wird funktionieren, bis Sie von Debug zu Release wechseln oder umgekehrt. Wenn Sie dies tun, können Project1.pro und Project2.pro problemlos aktualisiert werden und ihre ausführbaren Dateien in das richtige Verzeichnis gestellt werden, aber Project3.pro und Project4.pro verwenden das alte Verzeichnis.
Wenn ich alle betroffenen Makefiles manuell lösche, erzeugt qmake neue. Ich nehme an, ich könnte irgendeinen Vorkompilierbefehl schreiben, um jedes Makefile jedes Mal zu entfernen, aber das scheint die falsche Art zu sein, die Dinge zu tun, ganz zu schweigen von der Zeit, die ich ausgeben müsste, um sicherzustellen, dass es auf allen unseren Plattformen funktioniert .
Ich habe das in QT 4.6.4 bis 4.8.1 versucht.
Wenn ich QT Creator benutze, wechsle ich zwischen den Debug- und Release-Modi über verschiedene Build-Konfigurationen, die das nachahmen, was ich auf dem Kommando lüge (zB Hinzufügen oder Entfernen von CONFIG + = debug)
Jede und jede Hilfe wird sehr geschätzt.
Obwohl die QMake-Dokumentation anzeigt, dass es nur für den Projektmodus (Erstellen von .pro-Dateien) ist, versuchen Sie, die Option -r
zu qmake hinzuzufügen, um zu erzwingen, dass sie durch die Verzeichnisse rekursiv wird.
Das haben wir in der Vergangenheit bei unseren vielen tiefen SUBDIR-Projekten verwendet.