Moderne Build-Systeme für C++
-
Dieser Thread wurde von Moderator/in nachtfeuer aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ziemlich neu ist:
-
QtCreator: Ist alles mit dabei.
-
Wutz schrieb:
ziemlich neu ist:
Danke auch von mir für den Hinweis, ich schaue mir das gerade mal an da ich gernerell immer daran interessiert bin, was sich beim Thema Build-Systeme so alles tut.
Spätestens wenn man für verscheidene Zielplattformen und Compiler entwickelt, und auch noch auf verschiedenen Systemen kompilieren möchte, merkt man schnell was für ein "PITA" das alles istIch selbst bin gerade sehr zufrieden mit CMake, dem in meinen Augen am wenigsten schrecklichen der Cross-Platform-Buildsysteme
Finnegan
-
ShadowClone schrieb:
QtCreator: Ist alles mit dabei.
Das ist überhaupt kein Build System. Wie wilst du das auf einem Build Server "ausführen"? QtCreator benutzt qmake. Wir benutzen übrigens auch qmake. Haben da aber sehr viel umgebaut, weil für komplexe Projekte einfach sehr viel an Funktionalität fehlt.
-
Mechanics schrieb:
ShadowClone schrieb:
QtCreator: Ist alles mit dabei.
Das ist überhaupt kein Build System. Wie wilst du das auf einem Build Server "ausführen"? QtCreator benutzt qmake. Wir benutzen übrigens auch qmake. Haben da aber sehr viel umgebaut, weil für komplexe Projekte einfach sehr viel an Funktionalität fehlt.
Wir haben auch Anpassungen. Aber die musst du bei komplexeren Projekten sowieso machen. Aber so Grundfunktionalitäten sind bei qmake geschenkt.
-
Dann schreib zumindest "qmake" und nicht "QtCreator".
Ich wüsste aber ehrlich gesagt nicht, warum jemand, der kein Qt benutzt, qmake benutzen wollen würde.
-
produktionsbeauftragter schrieb:
Wie macht ihr das?
CMake. Das ist das, was du suchst.
produktionsbeauftragter schrieb:
Wie machen Software-Firmen das?
Irgendein Gemisch aus den unpassenden Optionen, die du aufgezählt hast, oder einfach CMake.
produktionsbeauftragter schrieb:
C++17 wird ja wahrscheinlich immer noch keine Modules bekommen also werde ich drei weitere Jahre dazu verdammt sein, mit diesem Mist fertig zu werden.
C++ Modules haben nichts hiermit zu tun. Das sind orthogonale Probleme. Auch mit Modules wird man CMake benutzen.
-
schön wäre ein Anhang zum C++ Standard mit der Beschreibung eines einheitlichen Build-Systems.
-
versionsnummer schrieb:
schön wäre ein Anhang zum C++ Standard mit der Beschreibung eines einheitlichen Build-Systems.
Build-Systeme machen im Allgemeinen noch wesentlich mehr, als lediglich dafür zu sorgen, dass ausschliesslich C++-Code gebaut wird, daher ist der C++-Standard nicht der richtige Ansatz.
C++-fremde Aufgaben von Build-System, die ich schon selbst genutzt habe:- Linken des Programms (!)
- Bauen und einbinden von C-Code und Bibliotheken.
- Kompilierung und Durchführung von automatisierten Tests.
- Gernerieren der Entwickler-Dokumentation (z.B. via Doxygen) oder einer Nutzerdoku via Latex.
- Installation/Deinstallation von Programmen.
- Signieren von Programmen.
- Erzeugen von Installationspaketen.
- Vorverarbeitung von GLSL/HLSL-Shadern.
- Konvertierung und "verpacken" von Assets (Grafiken/Texturen, 3D-Modelle/Animationen, Audiodaten, Schriftarten, etc.).
- etc.In dieser Richtung lassen sich noch beliebig viele andere Anwendungsfälle für in Build-System finden.
Finnegan
-
ein einheitliches Build-System kann ja offen für Custom Targets sein, solange garantiert ist, daß einige wesentliche Targets (incremental build, clean, debug, release) vorhanden sind, um aus Quellcode X die Binaries Y zu machen.
Wenn ich eine 3rd Party Library kompilieren muß, weil mein Code diese benötigt (und weil es keine plattformspezifisch einheitliche Spezifikation für Object Files gibt), dann interessiere ich mich weniger für Signaturen und Installationspakete, sondern mehr dafür, aus dem Quellcode Binaries zu machen, die ich linken kann, und zwar möglichst ohne daß ich in Makefiles herumfrickeln muß oder Build-Systeme installieren muß, die ich sonst gar nicht benutze.
Plattformspezifisch einheitliche Formate für Object Files und einheitliches Build-System für die o.g. Grund-Targets wären wirklich wünschenswert und würden die Schlagkraft von C++ vermutlich erhöhen, weil sich die Entwickler von Projekten mit zahlreichen 3rd Party Libraries mehr auf die eigentliche Entwicklung konzentrieren könnten und C++-Anfänger nicht noch Experten in make, cmake, bash ... werden müßten.