
LLVM bzw. CLANG
« | 25 Feb 2024 | »MSVC und GCC begleiten mich jetzt bald 20 Jahre beruflich und privat in unterschiedlichen Softwareprojekten. Dann kommt noch ein bisschen Watcom für die Retro-Schiene hinzu.
clang und die LLVM Toolchain waren für mich bisher immer ferne Trabanten, die ich zwar immer wieder mal beobachtete, aber nie aktiv einsetzte.
Nun gut … so ganz stimmt das nicht. Ich setze ja immer mehr und mehr ZIG mit Leidenschaft ein, und da läuft ein LLVM-Derivat drinnen.
Und außerdem baut mein WASM
Build mit embscripten auch mit
clang
im Hintergrund.
Aber: clang
nutzt aber auf vielen Plattformen die nativen Compiler des
Systems und ist daher ohne diese of unvollständig.
Auf der Ebene können alternative Tools zur Diagnose und eine bessere Optimierung eingefügt werden, aber das Rad wird damit nicht neu erfunden. Und deshalb nutze ich CLANG in der aktiven Entwicklung eher selten.
CLANG Installation
Ein übliches
1apt install clang llvm
oder
1winget install --id LLVM.LLVM
reicht aus, um clang
auf dem System nutzen zu können. Hier braucht man
dann natürlich noch einen entsprechenden GCC oder MSVC inklusive dessen
Umgebungsvariablen, damit das Toolset benutzt werden kann.
CMAKE
Für CMAKE ist es erforderlich, die clang
Executables als Compiler
einzutragen. Ich mache das in der Regel über eine Toolchain-Datei:
CMake findet dann clang
und über die Target-ID
werden auch die
richtigen Tools (im Fall von Cross-Compiling) benutzt um ein Projekt
zu übersetzen.
1cmake -DCMAKE_TOOLCHAIN_FILE=path/to/clang.x86_64-linux-gnu.toolchain.cmake ...
Mit der CMake-Bedingung
lassen sich in CMake auch Sonderfälle für das Compiler-Interface definieren.
Fazit
LLVM
und clang
werden somit vom GATE Framework unterstützt. Ein paar
Problemchen können bei Plattform-Header auftreten, die etwa bei einer GCC
oder MSVC Suche in CMake gefunden werden und mit clang
eben nicht.
Doch das hat man meist schnell gefunden und ge-patch-t.
Super finde ich die zusätzlichen Warnungen bei schlechtem Code, die mir schon einige Bugs aufgezeigt haben.
Nicht so gut finde ich die längeren Kompilier- und Link-Zeiten … aber für stabilieren Code bezahle ich so einen Zusatz gerne.
Ein clang
Build sollte also bei keinem Projekt fehlen, obwohl ich für
Releases dann doch eher wieder zu den bewährten Standard-Compilern greife.