Inhaltsverzeichnis

Target di build

WvdS FPC RAD Studio supporta diversi target di build per piattaforme differenti.

Panoramica

Target Compilatore Output Ambiente runtime
GUI FPC Binary nativo Desktop (Windows/Linux/macOS)
TUI FPC Binary nativo Terminale
Web pas2js JavaScript Browser/Node.js
Extension pas2js JavaScript VS Code Extension Host

Target GUI

Applicazioni desktop native con interfaccia grafica.

Tecnologia

Rendering PXAML

PXAML → IR → GUI Renderer → Controlli LCL

Controlli supportati:

Configurazione build

[build]
target=gui
platform=windows-x64
 
[gui]
widgetset=win32  # oppure: gtk2, qt5, cocoa

Target TUI

Interfacce utente basate su terminale per server e CLI.

Tecnologia

Rendering PXAML

PXAML → IR → TUI Renderer → Sequenze escape ANSI

Controlli supportati:

Configurazione build

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

Target Web

Applicazioni browser tramite transpilazione pas2js.

Tecnologia

Rendering PXAML

PXAML → IR → Web Renderer → DOM/CSS

Controlli supportati:

Configurazione build

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

Target Extension

Estensioni VS Code in Pascal.

Tecnologia

Particolarita

Configurazione build

[build]
target=extension
platform=vscode
 
[extension]
minversion=1.85.0

Matrice piattaforme

Funzionalita GUI TUI Web Extension
Finestre Si No Si WebView
Dialoghi Si Limitato Si Quick Input
Menu Si No Si Contributes
Accesso file Si Si Limitato Si
Rete Si Si CORS Si
Multi-threading Si Si Web Workers No

Condivisione codice

Il codice comune per tutti i target si trova in sources/common/:

sources/common/
├── core/         # Tipi base, utility
├── ui/
│   ├── controls/ # Astrazione controlli
│   ├── runtime/  # Runtime PXAML
│   └── targets/
│       ├── gui/  # Specifico GUI
│       ├── tui/  # Specifico TUI
│       └── web/  # Specifico Web

Compilazione condizionale:

{$IFDEF TARGET_GUI}
uses LCLType, Forms;
{$ENDIF}
 
{$IFDEF TARGET_WEB}
uses JS, Web;
{$ENDIF}
 
{$IFDEF TARGET_TUI}
uses WvdS.TUI.Console;
{$ENDIF}

Vedi anche