Inhaltsverzeichnis

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

PXAML-Rendering

PXAML → IR → GUI Renderer → LCL Controls

Unterstützte Controls:

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

PXAML-Rendering

PXAML → IR → TUI Renderer → ANSI-Escape-Sequenzen

Unterstützte Controls:

Build-Konfiguration

[build]
target=tui
platform=linux-x64
 
[tui]
colors=256  # oder: 16, truecolor
unicode=true

Web-Target

Browser-Anwendungen via pas2js-Transpilierung.

Technologie

PXAML-Rendering

PXAML → IR → Web Renderer → DOM/CSS

Unterstützte Controls:

Build-Konfiguration

[build]
target=web
platform=browser
 
[web]
minify=true
sourcemaps=true

Extension-Target

VS Code Extensions in Pascal.

Technologie

Besonderheiten

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