Inhaltsverzeichnis

Cilji gradnje

WvdS FPC RAD Studio podpira različne cilje gradnje za različne platforme.

Pregled

Cilj Prevajalnik Izhod Izvajalno okolje
GUI FPC Naravna binarna datoteka Namizje (Windows/Linux/macOS)
TUI FPC Naravna binarna datoteka Terminal
Web pas2js JavaScript Brskalnik/Node.js
Extension pas2js JavaScript VS Code Extension Host

GUI cilj

Naravne namizne aplikacije z grafičnim uporabniškim vmesnikom.

Tehnologija

PXAML upodabljanje

PXAML → IR → GUI upodabljalnik → LCL kontrolniki

Podprti kontrolniki:

Konfiguracija gradnje

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

TUI cilj

Uporabniški vmesniki v terminalu za strežnike in CLI.

Tehnologija

PXAML upodabljanje

PXAML → IR → TUI upodabljalnik → ANSI ubežne sekvence

Podprti kontrolniki:

Konfiguracija gradnje

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

Web cilj

Brskalniške aplikacije prek pas2js transpilacije.

Tehnologija

PXAML upodabljanje

PXAML → IR → Web upodabljalnik → DOM/CSS

Podprti kontrolniki:

Konfiguracija gradnje

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

Extension cilj

VS Code razširitve v Pascalu.

Tehnologija

Posebnosti

Konfiguracija gradnje

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

Matrika platform

Funkcionalnost GUI TUI Web Extension
Okna Da Ne Da WebView
Dialogi Da Omejeno Da Quick Input
Meniji Da Ne Da Contributes
Dostop do datotek Da Da Omejeno Da
Omrežje Da Da CORS Da
Večnitnost Da Da Web Workers Ne

Deljenje kode

Skupna koda za vse cilje je v sources/common/:

sources/common/
├── core/         # Osnovni tipi, pripomočki
├── ui/
│   ├── controls/ # Abstrakcija kontrolnikov
│   ├── runtime/  # PXAML izvajalno okolje
│   └── targets/
│       ├── gui/  # GUI specifično
│       ├── tui/  # TUI specifično
│       └── web/  # Web specifično

Pogojna kompilacija:

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

Glejte tudi