# Build und Werkzeuge

- **Normaler Build:** `aurac` wird mitgebaut und vor dem Ziel ausgeführt.
- **Cross-Builds** (Embedded): `aurac` muss auf dem Build-Rechner laufen. Man baut ihn einmal nativ und übergibt ihn mit `-DAURAC_EXECUTABLE=/pfad/aurac`. `libs/aura-lang` hat dafür keine Abhängigkeiten.
- **Fehler** in einer `.aura`-Datei brechen den Build mit `Datei:Zeile:Spalte: error: ...` ab, z. B. unbekannte Property, unbekannte ID, ID vor ihrer Definition, falscher Typ, unbekanntes Feld, unbekanntes Signal, doppelter Typ- oder Dateiname. Fehlende Theme-Werte meldet der C++-Compiler, dank `#line` ebenfalls mit der `.aura`-Zeile.
- **`#line`:** Vor dem Code jeder Property, jeder `repeat`-Liste und jeder `if`-Bedingung steht `#line <zeile> "<datei.aura>"`, danach geht es per `#line` zurück in die erzeugte Datei. So zeigen Compilerfehler, Backtraces und der Debugger auf die `.aura`-Zeile; in gdb geht `break abort.aura:10`. Die Spalte in Compilermeldungen bezieht sich weiter auf den erzeugten Code. Wer im erzeugten C++ debuggen will, schaltet es ab: `-DAURA_LINE_DIRECTIVES=OFF` (CMake) bzw. `aurac --no-line`.
- **VS Code:** `tools/aura-vscode` bringt Hervorhebung, Formatierung, Vervollständigung (Properties je Elementtyp, Komponenten des ganzen UI-Baums, `place`-Direktiven, IDs, Theme-Werte), Fehlerprüfung beim Tippen (`aurac --check`, ohne laufende Vorschau) und die Live-Vorschau. Installation und Tests: [tools/aura-vscode/README.md](../tools/aura-vscode/README.md). Nach Änderungen an `schema.h` `node tools/aura-vscode/scripts/generate.js` ausführen.
