====== 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]]