====== Build-Targets ====== WvdS FPC RAD Studio unterstützt verschiedene Build-Targets für unterschiedliche Plattformen. ===== Übersicht ===== ^ Target ^ Compiler ^ Ausgabe ^ Laufzeitumgebung ^ | GUI | FPC | Native Binary | Desktop (Windows/Linux/macOS) | | TUI | FPC | Native Binary | Terminal | | Web | pas2js | JavaScript | Browser/Node.js | | Extension | pas2js | JavaScript | VS Code Extension Host | ===== GUI-Target ===== Native Desktop-Anwendungen mit grafischer Benutzeroberfläche. ==== Technologie ==== * **Compiler:** Free Pascal Compiler (FPC) * **UI-Framework:** LCL (Lazarus Component Library) * **Ausgabe:** .exe (Windows), Binary (Linux/macOS) ==== PXAML-Rendering ==== PXAML → IR → GUI Renderer → LCL Controls **Unterstützte Controls:** * Alle Standard-LCL-Controls * Custom WvdS Controls * Native Widgets pro Plattform ==== Build-Konfiguration ==== [build] target=gui platform=windows-x64 [gui] widgetset=win32 # oder: gtk2, qt5, cocoa ===== TUI-Target ===== Terminal-basierte Benutzeroberflächen für Server und CLI. ==== Technologie ==== * **Compiler:** Free Pascal Compiler (FPC) * **UI-Framework:** WvdS TUI Framework * **Ausgabe:** Native Binary mit ANSI/VT100 Ausgabe ==== PXAML-Rendering ==== PXAML → IR → TUI Renderer → ANSI-Escape-Sequenzen **Unterstützte Controls:** * TextBlock, Label * TextBox (Single-Line Input) * Button (mit Tastaturnavigation) * ListBox, Table * ProgressBar * Border, Panel ==== Build-Konfiguration ==== [build] target=tui platform=linux-x64 [tui] colors=256 # oder: 16, truecolor unicode=true ===== Web-Target ===== Browser-Anwendungen via pas2js-Transpilierung. ==== Technologie ==== * **Compiler:** pas2js * **Ausgabe:** JavaScript-Bundle * **Laufzeit:** Browser, Electron, PWA ==== PXAML-Rendering ==== PXAML → IR → Web Renderer → DOM/CSS **Unterstützte Controls:** * Alle HTML-nativen Controls * CSS-basiertes Styling * Flexbox/Grid Layout ==== Build-Konfiguration ==== [build] target=web platform=browser [web] minify=true sourcemaps=true ===== Extension-Target ===== VS Code Extensions in Pascal. ==== Technologie ==== * **Compiler:** pas2js * **Ausgabe:** CommonJS-Modul * **Laufzeit:** VS Code Extension Host (Node.js) ==== Besonderheiten ==== * Kein DOM-Zugriff * VS Code API verfügbar * WebView für UI ==== Build-Konfiguration ==== [build] target=extension platform=vscode [extension] minversion=1.85.0 ===== Plattform-Matrix ===== ^ Feature ^ GUI ^ TUI ^ Web ^ Extension ^ | Fenster | Ja | Nein | Ja | WebView | | Dialoge | Ja | Limitiert | Ja | Quick Input | | Menüs | Ja | Nein | Ja | Contributes | | Dateizugriff | Ja | Ja | Limitiert | Ja | | Netzwerk | Ja | Ja | CORS | Ja | | Multi-Threading | Ja | Ja | Web Workers | Nein | ===== Code-Sharing ===== Gemeinsamer Code für alle Targets liegt in ''sources/common/'': sources/common/ ├── core/ # Basis-Typen, Utilities ├── ui/ │ ├── controls/ # Control-Abstraktion │ ├── runtime/ # PXAML Runtime │ └── targets/ │ ├── gui/ # GUI-spezifisch │ ├── tui/ # TUI-spezifisch │ └── web/ # Web-spezifisch **Conditional Compilation:** {$IFDEF TARGET_GUI} uses LCLType, Forms; {$ENDIF} {$IFDEF TARGET_WEB} uses JS, Web; {$ENDIF} {$IFDEF TARGET_TUI} uses WvdS.TUI.Console; {$ENDIF} ===== Siehe auch ===== * [[.:architektur|Architektur-Übersicht]] * [[.:build-pipeline|Build-Pipeline]] * [[.:pxaml-pipeline|PXAML-Pipeline]]