Gibt es eine Bibliothek, die C ++ oder C kompilieren kann?

8

Ich bin hierher gekommen, um diese Frage zu stellen, weil diese Seite mir in der Vergangenheit sehr nützlich war, sehr sachkundige Benutzer zu haben scheint, die bereit sind, eine Frage zu diskutieren, auch wenn sie manchmal metaphysisch ist. Und auch weil das googeln nicht funktioniert hat.

Java verfügt über einen Compiler und dann über eine JDT-Bibliothek, die java im laufenden Betrieb kompilieren kann (zum Beispiel in JasperReports verwendet, um eine Berichtsvorlage in Java-Code umzuwandeln).

Meine Frage: Kennt jemand eine Bibliothek / ein Projekt, die das Kompilieren als einen Satz von Bibliotheksklassen in c / c ++ anbieten würde? Zum Beispiel: eine Reihe von Klassen, um Vorverarbeitung, Parsing, CodeOptimierung und natürlich Binär-Rendering zu ausführbaren Bildern wie ELF oder Win-Format durchzuführen. Grundsätzlich etwas, das es erlauben würde, c oder c ++ - Scriptlets als Teil einer Anwendung zu kompilieren.

    
640KB 26.10.2010, 22:37
quelle

5 Antworten

14

Ja: llvm . Insbesondere klingeln . Zumindest bewerben sie damit die Projekte. Überprüfen Sie auch diese Frage . Es könnte relevant sein, wenn Sie sich entscheiden, llvm zu verwenden.

    
andref 26.10.2010 22:41
quelle
5

Sie können möglicherweise etwas aus dem LLVM -Projekt an Ihre Bedürfnisse anpassen.

    
Jack Kelly 26.10.2010 22:40
quelle
4

Sie können nur verlangen, dass ein Compiler installiert wird, dann rufen Sie ihn auf. Dies ist eine recht hohe Anforderung, aber über die einzige Möglichkeit, C oder C ++ wirklich "einzubetten". Es gibt Dolmetscher , die Sie möglicherweise einbetten können, aber das scheint derzeit eine schlechte Wahl zu sein, nicht zuletzt, weil irgendwelche Bibliotheken verwendet werden Im Skript müssen Entwicklungsversionen (dh Header und Quellen / kompilierte Bibliotheken) installiert sein, und diese Bibliotheken können auf den vom Interpreter unterstützten Funktionsumfang beschränkt sein (z. B. Qualität der Vorlagenimplementierung).

Sie verwenden besser eine Sprache wie Python oder Lua zum Einbetten.

    
Roger Pate 26.10.2010 22:41
quelle
1

Da ist der ch-Interpreter, aber ich habe ihn nicht benutzt. Im Allgemeinen wird für Scripting-Anwendungen eine natürlichere Skriptsprache verwendet.

    
rerun 26.10.2010 22:41
quelle
1

Großartig. Es sieht so aus, als ob LLVM das ist, wonach ich gesucht habe. Vielen Dank für Ihr Feedback. Ich bin nicht in erster Linie nach C ++ als Skriptsprache. Ich habe festgestellt, dass Python als eingebettete Skript-Engine verwendet wird. Mein Hauptgrund ist zweifach:

  1. Befreien Sie sich von Make, CMake und der Hölle, die Autoconf ist, und ersetzen Sie sie durch etwas wie Scons, das sich mit allen Phasen des Kompilierens verbindet und mit ihnen interagiert
  2. Gehen Sie nach dem Parsen und dem automatischen Generieren von Code in den Kompilierungsvorgang ein. Spezifischer meta-bezogener Code. In meinem Fall war ich in der Lage, fast jedes Merkmal von Java in C ++ zu implementieren, außer einem: Reflection.

Warum sollten Sie Ihren Code nicht nutzen, wie RTTI, der oft nicht ausreicht. Stattdessen könnte man selektiv zusätzliche Funktionen erzeugen. Entwickler müssten jedoch entscheiden, wann und wie sie diesen zusätzlichen Code verwenden können.

    
640k 28.10.2010 13:32
quelle

Tags und Links