====== Projektdatei *.lpf — ein Bau, eine Datei ====== Statt Quelle, Ziel, Include-Pfade und Schalter bei jedem Aufruf zu wiederholen, stehen sie in einer Datei: lyxc projekt.lpf Das Format ist eine **kleine TOML-Teilmenge**; deutsche und englische Schlüssel sind gleichwertig. Seit lyxc 1.1.13A. → [[lyx_-_programmiersprache:tools|Tools & Compiler]] · [[lyx_-_programmiersprache:tools:compiler-parameter|Compiler-Parameter]] · [[lyx_-_programmiersprache:tools:lpm|LPM — Package Manager]] ---- ===== 1. Aufbau ===== [projekt] quelle = "apps/vcldemo.lyx" # Pflicht ziel = "lyxos" # wie --target= ausgabe = "build/vcldemo.lbf" # wie -o [include] pfade = [".", "platform/lyxos"] [schalter] liste = ["--emit=lbf", "-O2"] [pakete] vega = "0.3.1" # via `lpm resolve` aufgelöst ^ Abschnitt ^ Schlüssel ^ Entspricht ^ | ''[projekt]'' | ''quelle'' (Pflicht), ''ziel'', ''ausgabe'' | die Quelldatei, ''%%--%%target='', ''-o'' | | ''[include]'' | ''pfade'' (Liste) | je ein ''-I'' | | ''[schalter]'' | ''liste'' (Liste) | beliebige Schalter der Kommandozeile | | ''[pakete]'' | '' = ""'' | wird über ''lpm resolve '' aufgelöst | ===== 2. Die vier Regeln, die man kennen muss ===== * **Die Kommandozeile überstimmt die Datei.** ''lyxc demo.lpf --target=linux'' ist ein Gegenversuch, ohne die Datei anzufassen. Nachgemessen: ''lyxc demo.lpf --target=lyxos -o build/demo.lbf'' erzeugt einen LBF-Container (''LYX!''), obwohl in der Datei ''ziel = "linux"'' steht. * **Relative Pfade zählen vom Verzeichnis der ''.lpf''**, nicht vom Arbeitsverzeichnis. Dieselbe Datei baut damit von überall dasselbe — nachgemessen aus dem Elternverzeichnis heraus, gleiches Erzeugnis. * **Schalter laufen durch denselben Parser wie die Kommandozeile.** Es gibt keine zweite, veraltende Schaltertabelle. * **Unbekannte Abschnitte und Schlüssel werden gemeldet**, nicht übergangen: bad.lpf:1: unbekannter Abschnitt [incldue]. Bekannt: [projekt] [include] [schalter] [pakete]. > Ein Tippfehler ''[incldue]'' verschlänge sonst alle Pfade darin und fiele erst weit später als „Modul nicht gefunden" auf. > **Das Ausgabeverzeichnis legt lyxc nicht an.** Steht ''ausgabe = "build/demo"'' und es gibt kein ''build/'', endet der Lauf mit ''error: codegen: Ausgabedatei laesst sich nicht oeffnen: build/demo''. Ein ''mkdir -p build'' gehört ins Bauskript. ===== 3. Pakete — der erste Aufruf von lpm durch den Compiler ===== Mit ''[pakete]'' ruft **der Compiler selbst** den Paketmanager: ''lpm resolve ''. Entwickelt wird ''lpm'' im eigenständigen Projekt ''SEOLizer/lyx-lpm''; ''lyxc'' hängt nur am **Programm**, nicht an dessen Quelltext. Ein Paket liegt im Cache flach (''~/.lpm/cache/vega/0.3.1/types.lyx''), während seine Unit ''vega.types'' heißt. Die Zuordnung erfolgt deshalb über den **Paketnamen**, nicht über einen Include-Pfad — und steht in ''src/paket_pfade.lyx'' **einmal**, benutzt von beiden Auflösern (''sema'' und ''ir_lower''), die dieselbe Antwort geben müssen ([[https://github.com/SEOLizer/LyX-Compiler/issues/1724|#1724]]). ===== 4. Ein vollständiges Beispiel ===== mkdir -p build lyxc demo.lpf && ./build/demo [projekt] quelle = "t.lyx" ziel = "linux" ausgabe = "build/demo" [include] pfade = ["."] [schalter] liste = ["-O2"] ---- Letzte Aktualisierung: 2026-08-30 — Seite neu angelegt; gegen lyxc 1.1.14A gemessen (Bau, Überstimmen durch die Kommandozeile, Lauf aus einem anderen Verzeichnis, Meldung bei falschem Abschnittsnamen, fehlendes Ausgabeverzeichnis).