CHET ist ein .h-to-.pas -Übersetzer von Libclang für Delphi.
Im Gegensatz zu einigen anderen Header -Übersetzern verwendet Chet den Klang -Compiler, um Header -Dateien zu analysieren, was zu genaueren Übersetzungen führt, die weniger manuelle Anpassungen erfordern.
Einige bemerkenswerte Funktionen sind:
#define Erklärungen in Konstanten nach Möglichkeit zu übersetzen..pas -Datei für ein ganzes Verzeichnis von .h -Dateien. Dies reduziert die Probleme aufgrund von Abhängigkeiten zwischen Header -Dateien..chet -Projektdatei zur Wiederverwendung zu speichern. #ifdef -Anweisungen). Das ist sowohl gut als auch schlecht. Es ist gut, weil es die Conversion -Genauigkeit verbessert. Es kann jedoch schlecht sein, weil das System, auf dem Chet ausgeführt wird, einige bedingte Pfade zu bestimmen. Da Chet beispielsweise unter Windows ausgeführt wird, wird Code in #ifdef _WIN32 -Abschnitten analysiert, überspringt jedoch jeden Code in Abschnitten für andere Plattformen. Da Chet einen tatsächlichen Compiler verwendet, müssen Sie eine (minimale) C -Entwicklungsumgebung sowie LLVM mit Clang installiert haben. Clang muss in der Lage sein, die Systemheader für die Entwicklungsumgebung zu finden. Diese sind normalerweise verfügbar, wenn Sie eine Version von Visual Studio mit Visual C ++ installiert haben. Die kostenlose (Community) Edition von Visual Studio reicht aus.
Sie können zuerst Chet ausführen, um alle Fehler in Bezug auf fehlende Abhängigkeiten zu überprüfen. Wenn Sie beim Ausführen des Übersetzers Abhängigkeitsfehler erhalten, können Sie die Abhängigkeiten hier herunterladen:
Sie können die vorkompilierte 64-Bit-Windows-Chet-Anwendung im Bin Verzeichnis verwenden.
Wenn Sie Chet selbst kompilieren möchten, benötigen Sie auch Libclang für Delphi und stellen Sie sicher, dass die Delphi -IDE es finden kann (das Chet -Projekt findet es automatisch, wenn das Verzeichnis Neslib.Clang auf dem gleichen Niveau wie das Chet -Verzeichnis liegt).
Vielen Dank für diese Beiträge:
Chet ist ziemlich einfach. In vielen Fällen müssen Sie nur ein Verzeichnis mit Header -Dateien, dem Namen der Ausgabe .pas -Datei, angeben und "Header -Übersetzer ausführen (F9) ausführen".
Für mehr Kontrolle über den Konvertierungsprozess können Sie verschiedene Optionen angeben, die unten beschrieben werden.

Alle von Ihnen festgelegten Konfigurationsoptionen können in einer .chet Konfigurationsdatei (eine einfache Ini-Datei) gespeichert werden. Auf diese Weise können Sie die Einstellungen später laden, um die Konvertierung erneut auszusetzen (z. B. wenn neue Versionen der Header -Dateien veröffentlicht wurden). Sie können diese Konfigurationsoptionen mit dem Menü File laden und speichern.
Um einige Einstellungen für eine neue Sitzung vorzubeugen, wählen Sie File | New Project... (Ctrl+N) . Sie geben den Namen des Projekts ein, und Chet konfigurieren einige Einstellungen basierend auf dem von Ihnen eingegebenen Namen (obwohl Sie diese Einstellungen später jederzeit ändern können).
Das Run von Menü genau wie der einzelne Options Run Header Translator , den Sie auch mit F9 aktivieren können.
Die Projektseite enthält die wichtigsten Konfigurationsoptionen:
.h -Dateien an. Das Verzeichnis kann relativ zum Verzeichnis sein, das die .chet -Projektdatei enthält. Klicken Sie auf die Schaltfläche ... , um nach einem Verzeichnis zu durchsuchen. Es wird empfohlen, das Verzeichnis nicht mit dem ursprünglichen C -Quellcode zu verwenden. Kopieren Sie stattdessen die Header -Dateien in ein separates Verzeichnis nur für Konvertierungszwecke. Dies erleichtert das Löschen von Header -Dateien, die Sie nicht konvertieren möchten, oder um Änderungen an Header -Dateien für Konvertierungszwecke vorzunehmen..pas -Datei an, die generiert wird. I Single Combined Pascal -Datei wird für alle Parsen -Header -Dateien generiert. Der Name kann relativ zum Verzeichnis sein, das die .chet -Projektdatei enthält. Klicken Sie auf die Schaltfläche ... , um ein Dialogfeld Speichern zu öffnen.Windows.Winapi ) von Deklarationen abhängen, können Sie diese Einheiten hier auflisten. Die Verwendungsklausel der generierten Pascal -Datei wird hinzugefügt.Auf dieser Seite geben Sie an, welche Plattformen Sie abzielen möchten und wie Sie sie konfigurieren möchten.
LIB_MYLIB sein, sodass die folgende Deklaration generiert wird: const LIB_MYLIB = 'mylib.dll' .Als nächstes stehen Kontrollkästchen für alle Plattformen, die Sie zielen möchten (32-Bit-Windows, 64-Bit-Windows, 32-Bit-MacOS, 64-Bit-Linux, iOS und Android). Für jede Plattform, die Sie überprüfen, müssen Sie die folgenden Optionen eingeben:
_ -Zeichen).Hier können Sie den Clang -Parsing -Prozess anpassen.
-D<define> ) und die Suchpfade ( -I<path> ) einschließen. Es gibt separate Schaltflächen, mit denen diese einfacher hinzugefügt werden können. Informationen zu den verfügbaren Befehlszeilenargumenten der Clang finden Sie in der Clang -Dokumentation.Hier passen Sie die generierte Ausgabe an.
cdecl und stdcall wählen. In fast allen Fällen sollten Sie die Standard cdecl -Konvention verwenden. Verwenden Sie stdcall nur für 32-Bit-Windows-DLLs, von denen Sie wissen, dass sie mit der STDCALL-Aufrufkonvention zusammengestellt werden. Dies sind normalerweise nur Windows -System -DLLs. Die meisten DLL -CDEC -Nutzung der dritten Party.char Typ ist mehrdeutig, er kann als 8-Bit-Ganzzahl oder Zeichen in einer Textzeichenfolge verwendet werden. Die typisierten Versionen signed char und unsigned char werden immer in Shortint bzw. Byte umgewandelt. Wenn jedoch keine Unterzeichnungsness angegeben ist, haben Sie die folgenden Optionen:char in einen plattformübergreifenden UTF8Char konvertieren.char in einen 8-Bit-Shortint- Shortint umwandeln.char in ein 8-Bit Byte konvertieren.begin und procedure ) in Konflikt stehen. Hier geben Sie an, wie Sie diese Kennungen konvertieren möchten:public ) als Kennungen in Delphi verwenden, aber es sieht seltsam aus und Delphis Syntax Highlighter behandelt sie anders. Sie möchten diese also normalerweise auch als reservierte Wörter behandeln.type MyEnum = Integer; ) und erstellen Sie Konstanten für jede Option in der Aufzählung. Dies kann für einige Bibliotheken eher anwendbar sein.#define 's, siehe Anmerkungen unten). Hier geben Sie an, wie Sie mit diesen umgehen:TODO Kommentar in den Delphi-Quellcode sowie eine kommentierte Version der ursprünglichen Deklaration. Denken Sie daran, dass Sie eine Liste aller Todo in der Delphi -IDE anzeigen können, indem Sie View | Tool Windows | To-Do List .Beachten Sie, dass nur Doxygen -Dokumentation Kommentare von Clang analysiert werden. Dies sind Kommentare, die einer dieser Formatkonventionen folgen:
/// Comment (with 3 slashes)/** Comment (with two stars) *//*! Comment (with exclamation point) *////< Comment (applies to preceding declaration)/**< Comment (applies to preceding declaration) *//*!< Comment (applies to preceding declaration) */ CHET versucht, #define Deklarationen in Konstanten zu konvertieren, wenn möglich. Dies funktioniert nur, wenn:
#define ABS(x) (x < 0) ? -x : x kann nicht übersetzt werden.#define FOO 3<<BAR wird in const FOO = 3 shl BAR umgewandelt.Hier können Sie eine Liste von Symbolen angeben, die Sie ignorieren sollen. Diese Symbole werden nicht übersetzt.
Die häufigste Verwendung besteht darin, #define 's zu ignorieren, die Konvertierungsfehler oder Funktionen generieren, die Sie nicht benötigen. Sie können auch einige Typen ignorieren, dies kann jedoch später zu Kompilierungsfehlern führen, da erwartete Typen fehlen.
Beachten Sie, dass Symbole Fallempfindlichkeit sind.
Auf der letzten Seite verfügt nur eine einzige Taste "Header -Übersetzer ausführen" (die Sie auch mit F9 aktivieren können). Es zeigt den Fortschritt des Übersetzungsprozesses sowie alle Fehler, die beim Parsen der Header -Dateien aufgetreten sind.
Sie können diese Fehler verwenden, um die Header -Dateien zu beheben, fehlende Header -Dateien hinzuzufügen oder diesen Parsenprozess durch Hinzufügen von Befehlszeilenargumenten zu konfigurieren (beispielsweise durch Hinzufügen von Include -Suchpfaden).
Chet ist unter der vereinfachten BSD -Lizenz lizenziert. Einzelheiten siehe Lizenz.txt.