====== 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 ==== * **Compilatore:** Free Pascal Compiler (FPC) * **UI Framework:** LCL (Lazarus Component Library) * **Output:** .exe (Windows), Binary (Linux/macOS) ==== Rendering PXAML ==== PXAML → IR → GUI Renderer → Controlli LCL **Controlli supportati:** * Tutti i controlli standard LCL * Controlli WvdS personalizzati * Widget nativi per piattaforma ==== 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 ==== * **Compilatore:** Free Pascal Compiler (FPC) * **UI Framework:** WvdS TUI Framework * **Output:** Binary nativo con output ANSI/VT100 ==== Rendering PXAML ==== PXAML → IR → TUI Renderer → Sequenze escape ANSI **Controlli supportati:** * TextBlock, Label * TextBox (input singola riga) * Button (con navigazione tastiera) * ListBox, Table * ProgressBar * Border, Panel ==== Configurazione build ==== [build] target=tui platform=linux-x64 [tui] colors=256 # oppure: 16, truecolor unicode=true ===== Target Web ===== Applicazioni browser tramite transpilazione pas2js. ==== Tecnologia ==== * **Compilatore:** pas2js * **Output:** Bundle JavaScript * **Runtime:** Browser, Electron, PWA ==== Rendering PXAML ==== PXAML → IR → Web Renderer → DOM/CSS **Controlli supportati:** * Tutti i controlli nativi HTML * Styling basato su CSS * Layout Flexbox/Grid ==== Configurazione build ==== [build] target=web platform=browser [web] minify=true sourcemaps=true ===== Target Extension ===== Estensioni VS Code in Pascal. ==== Tecnologia ==== * **Compilatore:** pas2js * **Output:** Modulo CommonJS * **Runtime:** VS Code Extension Host (Node.js) ==== Particolarita ==== * Nessun accesso DOM * API VS Code disponibile * WebView per UI ==== 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 ===== * [[.:architektur|Panoramica architettura]] * [[.:build-pipeline|Pipeline di build]] * [[.:pxaml-pipeline|Pipeline PXAML]]