Seite 1 von 1

Mit verschiedenen Build-Verzeichnisse und QMake arbeiten

Verfasst: 6. November 2008 07:47
von blueSpirit
Hallo,

ich hab bisher bei grösseren Projekten nur mit den Autotools gearbeitet
und habe folgendes Vorgehen kennengelernt und finde es sehr praktisch:

Es gibt einen "source-tree" - also ein Verzeichnis mit dem Quellcode,
welches auch das "configure"-Skript enthält. Dazu parallel gibt es
verschiedene Build-Verzeichnisse, in welchen das "../src_tree/configure"
mit unterschiedlichen Parametern aufgerufen wird.

Anwendungsfall:
Wir stellen Handgeräte her, welche auf ARM laufen. Also hätte ich jeweils
einen Build-Ordner fuer
  • * ARM -O2
    * ARM -O0 -g
    * x86 -O02 (XServer)
    * x86 -O0 -g (XServer)
    * x86 -O2 (Framebuffer)
Ein Entwicklungsschritt zB. beim Bugfixen sieht so aus, dass ich zuerst
den Bug in x86 behebe, und anschließend auch auf ARM testen muss.

Mit QMake muss ich aber mindestens das komplette Makefile neu erstellen,
weil ich bisher nichts gefunden habe, wie ich einen "build outside the
source tree" durchführen könnte.

Habt ihr einen Tipp für mich?

Vielen Dank,
Charly

PS: Ich könnte jetzt zusätzlich zu den nach Architektur getrennten
OBJ-Verzeichnissen auch noch verschiedene Makefiles anlegen
(make -f Makefile.arm-debug) aber das finde ich irgendwie hässlich.
Alternativ könnten wir von QMake ganz weggehen und CMake
einsetzen...

Verfasst: 6. November 2008 07:52
von CaptnChaos
du kannst auch subdirs definieren.
Oder du behältst deine Ordnerstruktur bei, erstellst in jedem deiner "build" Ordern eine pro Datei und gibst bei DEPENDPATH das Quellenverzeichniss ein.

Verfasst: 6. November 2008 08:14
von blueSpirit
Vielen Dank, ich werde es ausprobieren.

Verfasst: 6. November 2008 08:18
von Christian81
Mit QMake muss ich aber mindestens das komplette Makefile neu erstellen,weil ich bisher nichts gefunden habe, wie ich einen "build outside the source tree" durchführen könnte.
Das verstehe ich gerade nicht - Du hast 5 verschiedene Build-Verzeichnisse (was ich auch machen würde) und was hast Du dann für ein Problem?