Diese Frage bezieht sich auf CMake-Konfigurationsdateien einrichten, so dass sowohl einfache Benutzer als auch Co-Entwickler dienen.automatisch generierte Quellen und Cmake-Konfiguration: Entwickler Build vs Benutzer Build
Beide Benutzergruppen müssen kompilieren. Der Unterschied zwischen ihnen besteht darin, dass Co-Entwickler vor dem Kompilieren eine Reihe von Codegeneratoren oder Konvertern wie flex/bison
, swig
oder pod2man
ausführen werden. Diese Werkzeuge sollen nicht mit unserem Quellpaket geliefert werden, sondern als externe Abhängigkeiten benötigt werden. Einfache Benutzer sollten jedoch mit dem gesamten automatisch generierten Code versehen werden, so dass sie kein anderes Tool als cmake, make und einen Compiler installieren und ausführen müssen.
Nun ist die Frage: Wie der Haupt CMakeLists.txt
, so dass bei cmake
wir nur kompilieren einzurichten, während auf cmake <expert flag>
alle Hilfsmittel erforderlich sind und laufen? Als offensichtliche Verfeinerung sollten feinkörnigere Flags es erlauben, einzelne Werkzeuge ein- oder auszuschalten.
Wenn Sie nicht planen, die Codegeneratoren oder Konverter mit dem Quellpaket für "normale Benutzer" zu verteilen, könnten Sie dies als Unterscheidungsmerkmal verwenden. Überprüfen Sie einfach die Existenz der Werkzeuge oder ihrer Unterverzeichnisse. Die Hauptfrage wäre, wie Sie die Ausgabe der Codegeneratoren oder -konverter liefern (die normalerweise in den binären Ausgabeverzeichnissen für "Mitentwickler" landen)? Wenn Sie keine doppelten Dateien (ausgeliehen und generiert) haben möchten, können Sie die Ausgaben als Zip hinzufügen und sie während der Generierung der Build-Umgebung in die binäre Ausgabe extrahieren. – Florian
@Florian: Menschen sollten frei sein, die Rollen zwischen Benutzer und Entwickler zu wechseln; das Vorhandensein von Werkzeugen sollte nicht automatisch ihre Verwendung auslösen. Im zweiten Teil Ihres Kommentars werfen Sie ein wichtiges Problem auf: In welchem Verzeichnis sollte der automatisch generierte Code enthalten sein? –