D Lang - crosscompilare applicazione Gtk4 per windows
Autore: Fabio Di Matteo
Ultima revisione: 16/07/2025 10:30
Serve avere installato Wine con il compilatore dmd e avere il bundle gtk4-runtime (ricavato con msys2 con lo script Uno script per creare un bundle per il nostro eseguibile)
Preparativi
Sulla macchina con linux dove lavoriamo impartiamo il comando
dub init myapp gid:gtk4
Creerà il progetto e installerà (compilerà) le dipendenze necessarie in fase di compilazione .
Incollare un hello world gtk4 scritto in D sul file source/app.d Hello world in gtk4 e linguaggio D usando Gid.
compilare il progetto con dub impartendo il comando
wine dub build
Abbiamo creato così il nostro esebuibile, ma per distribuirlo servirà metterlo in una cartella assieme al bundle gtk4, sullo stesso livello degli altri file.
dub.json
{
"authors": [
"fabio"
],
"copyright": "Copyright © 2025, fabio",
"dependencies": {
"gid:gtk4": "~>0.9.7"
},
"description": "A minimal D application.",
"license": "MIT",
"name": "gtk4-win",
"targetType":"executable",
"targetPath": "./build",
"lflags":[
"-subsystem:windows",
"-entry:mainCRTStartup"
]
}
le direttive :
... "lflags":[ "-subsystem:windows", "-entry:mainCRTStartup" ] ...
fanno in modo che non si apre la finestra della console di windows. Puo' essere utile disattivarle in fase di debug.
Potremmo abilitarle anche solo su windows:
"lflags-windows-x86_64":[ "-subsystem:windows", "-entry:mainCRTStartup" ]
la funzione main
Devo dire a windows che uso il subsystem per le applicazioni grafiche attraverso l'entrypoint del WinMain. Hello world in gtk4 e linguaggio D usando Gid
