Ich benutze CMake, um meine Projekte IDE / Makefiles zu generieren, aber ich muss immer noch benutzerdefinierte "Skripte" aufrufen, um meine kompilierten Dateien zu manipulieren oder sogar Code zu generieren.
In früheren Projekten habe ich Python verwendet und es war in Ordnung, aber jetzt habe ich ernsthafte Probleme mit der Verwaltung vieler Abhängigkeiten in zwei sehr großen Projekten, an denen ich arbeite. Daher möchte ich die Abhängigkeiten überall minimieren.
Jemand schlug mir vor, C ++ zu verwenden, um meine Build-Skripte zu schreiben, anstatt nur dafür eine Sprachabhängigkeit hinzuzufügen. Die Projektthemen verwenden bereits C ++, sodass ich verschiedene Vorteile sehe:
- Um das gesamte Projekt zu erstellen, wären nur ein C ++ - Compiler und CMake erforderlich, sonst nichts (alle anderen Abhängigkeiten sind C oder C ++).
- Die Sicherheit des C ++ - Typs (bei Verwendung von modernem C ++) macht es einfacher, "richtig" zu werden.
- Es ist auch die Sprache, die ich besser kenne, damit ich mich besser damit auskenne, auch wenn ich in der Lage bin, guten Python-Code zu schreiben.
- potenzieller Gewinn an Ausführungsgeschwindigkeit (aber ich denke nicht, dass es wirklich wahrnehmbar sein wird);
Ich denke jedoch, dass es einige Nachteile geben könnte, und ich bin mir nicht sicher, welche Auswirkungen dies haben könnte, da ich es noch nicht versucht habe:
- Das Schreiben des Codes könnte länger dauern (das heißt, ich bin mir nicht sicher, weil ich in C ++ effizient genug bin, um etwas zu schreiben, das schnell funktioniert. Für dieses System wäre es möglicherweise nicht so lang) (Kompilierungszeit sollte nicht sein.) t ein Problem für diesen Fall sein);
- Ich muss davon ausgehen, dass alle Textdateien, die ich als Eingabe lesen werde, in UTF-8 vorliegen. Ich bin mir nicht sicher, ob sie zur Laufzeit in C ++ einfach überprüft werden können, und die Sprache prüft sie nicht für Sie.
- Bibliotheken in C ++ sind schwerer zu verwalten als in Skriptsprachen.
Mir fehlen Erfahrung und Weitsicht, also fehlen mir vielleicht Vor- und Nachteile. Die Frage ist also: Ist es sinnvoll, dafür C ++ zu verwenden? Haben Sie Erfahrungen zu berichten und sehen Sie Vor- und Nachteile, die wichtig sein könnten?
quelle
Antworten:
Verwenden Sie einfach Python.
Ich entwickle in C ++ und erstelle meine Build-Skripte in Python, und ich würde es als schmerzhaft empfinden, Build-Skripte in C ++ zu erstellen:
Zu den Vorteilen, die Sie für C ++ auflisten:
quelle
Ich halte dies für eine fallspezifische Frage. Ich würde behaupten, es gibt keine richtige Antwort, ob es sinnvoll ist, C ++ für Build-Skripte zu verwenden oder nicht. Die einzige Möglichkeit, dies herauszufinden, besteht darin, es in der Praxis auszuprobieren.
Persönlich würde ich Python C ++ überlegen sehen, weil es eine bessere Ausdruckskraft der Sprache und einfachere (persönliche Meinung natürlich) Standardbibliothekstools für die Bearbeitung von Binärdateien und die Generierung von Code bietet. Natürlich könnten hochentwickelte Bibliotheken verfügbar sein, die für diese Aufgabe entwickelt wurden, aber wenn nicht, würde ich persönlich definitiv darauf setzen, dass Python die "häufigere richtige" Antwort ist - im Allgemeinen.
quelle
Schreiben Sie keine Skripte selbst, Sie duplizieren den Aufwand und erfinden die Räder neu.
Verwenden Sie so etwas wie SCONS oder sogar Maven 3, das C ++ Build-Systeme unterstützt .
Ein gutes Build-System sollte unabhängig von der Sprache keine benutzerdefinierte Logik in Form von Skripten erfordern, um ein funktionsfähiges ausführbares Artefakt zu erstellen.
Wenn Sie Skripts für ein Build-System schreiben müssen, um es anzupassen, ist es kein gutes Build-System. Das Schreiben eines Plugins für ein Build-System ist eine andere Geschichte, aber das sollte sich hauptsächlich auf eine Umgebung / Hardware beziehen und sollte etwas sein, auf das selten zurückgegriffen wird.
quelle
Um sich auf die Frage zu konzentrieren:
Die Antwort ist ein einfaches Nein .
Die aktuell akzeptierte Antwort zoomt in Python und listet eine ganze Reihe gültiger Bedenken auf, aber ich möchte einen sprachunabhängigen Grund hinzufügen:
Sie wirklich nicht wollen Skript etwas in jedem kompilierte Sprache , wenn Sie ihm helfen können:
Darüber hinaus gehen mit der anderen Antwort:
Wahrscheinlich möchten Sie auch keine "rohe" Skriptsprache verwenden, um Ihre Build-Skripts zu erstellen (ich verstehe , dass die C ++ - Komplikationen von CMake behandelt werden).
Was Sie wahrscheinlich tun sollten, ist eine der Builds zu wählen . Systeme . raus . dort . und schau ob man deine rechnung wrt passt. Skriptfähigkeit / Erweiterbarkeit / Play-nice-with-CMake / Cross-Plattform.
quelle