Hier ein Auszug aus einer internen Diskussion über Aspekte des Buildsystems,
die ich gern öffnen würde.

Hintergrund
-----------
Wir benutzen seit Herbst 2014 in REFLEX die Qt Build Suite zum Bauen, welche
den Prozess durch die einfache intuitive, deklarative Syntax der
Builddateien gegenüber Make wesentlich vereinfacht, stark beschleunigt und
es außerdem sehr einfach macht, aus einem Sourceordner in verschiedenen
Buildverzeichnissen zu bauen.

Dokumentation des Buildsystems:
  https://reflex.readthedocs.org/en/develop/build.html
Offene Tickets dazu:
  https://bitbucket.org/reflex-dev/reflex/issue/87/refine-qbs-build-process

Diskussion
----------
Richard Weickelt:
>> langfristig müssen wir
>> eine Lösung für https://bugreports.qt.io/browse/QBS-733 finden um für jede
>> Toolchaininstallation nur ein Profil zu behalten und projektweit
>> Compilerflags setzen könnten. Kurzfristig können wir das aber gut über
>> Wrapperscripte lösen, in dem man dort den qbs-Aufruf reinsteckt und die
>> gewünschten Compilerflags per Kommandozeile mitgibt.

Stefan Nürnberger:
> Solange es für den Bugreport keine Lösung gibt, finde ich die Variante
> mit verschiedenen Profiles gar nicht so schlecht. Wäre nur schön, wenn
> man die in getrennten Dateien abgelegt zur Verfügung hätte, und die
> nicht immer in die qbs Konfiguration des Nutzers importieren muss. Also
> vielleicht ein Wrapper, der die aktuelle QBS config sichert, die neue
> aus der Datei lädt, baut, und danach die alte config wieder herstellt.

Verschiedene Profile braucht es auf jeden Fall, für jede
Toolchaininstallation mindestens eins. Hinzu kommt, dass auch Module welche
Zugang zu installierten Tools (wie zum Beispiel rme)  benötigen,
entsprechend vorkonfiguriert werden sollten.

Die Profile sollten aber von den Projekten völlig unberührt bleiben. Mit
Wrapperscript meinte ich ein Script, welches solch eine Konfigurationsdatei
z.B. in der Form oder noch simpler einliest:

    # ------ project.conf ------
    cpp.commonCompilerFlags : "-ffunction-sections,-fdata-sections"
    cpp.LinkerFlags: "-Wl,--gc-sections"
    ...

dass man dann so aufruft:
    qbs-wrapper profile:XXX [OPTIONS] --config project.conf

und welches dann mit obiger Datei qbs ausführt:
    qbs profile:XXX [OPTIONS]
cpp.commonCompilerFlags:"-ffunction-sections,-fdata-sections"
cpp.linkerFlags:"-Wl,--gc-sections"

So kann man wunderbar auf verschiedenen Rechnern (n Entwickler,
Build-Server, Test-Server) das Projekt mit den gleichen Compilerflags
benutzen und muss die Qbs-Profile nicht ständig anfassen.

Richard

Antwort per Email an