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

Zuletzt geändert: den 29.01.2026 um 15:13