Arrêtez l'invite de commande de s'ouvrir lors de l'exécution du fichier exe construit à partir du projet haskell

Nov 30 2020

J'ai créé une petite application qui utilise la bibliothèque de gloss pour une interface graphique. Lorsque vous tapez "cabal run [cabal file]", le projet est construit et exécuté, et ne demande que l'interface graphique. Lorsque je clique à la place sur le fichier .exe qui a été généré à partir de la construction, l'interface graphique s'ouvre, tout comme l'invite de commande. Je veux arrêter l'ouverture de l'invite de commande et ouvrir uniquement la fenêtre de gloss.

Réponses

3 JonPurdy Nov 30 2020 at 20:08

Par défaut, sur Windows, GHC crée des programmes de console, qui ouvrent un terminal d'invite de commandes s'il n'est pas déjà ouvert. Si vous souhaitez créer un programme uniquement GUI, vous pouvez passer -mwindowà l'éditeur de liens en donnant le -optl -mwindowdrapeau à GHC. Si vous utilisez Cabal, vous ajouteriez cet indicateur au ghc-optionschamp de la strophe exécutable.

Méfiez - vous que si vous utilisez ce drapeau, votre programme n'aura pas stdin, stdoutou stderrpoignées de fichiers, de sorte que des actions comme putStrLn, printet getLinene fonctionnera pas, car ils sont équivalents à hPutStrLn stdout, hPrint stdoutet hGetLine stdin. Si vous souhaitez effectuer une journalisation ou une impression, vous devrez ouvrir un descripteur vous-même (par exemple un fichier, un terminal ou un socket avec un autre programme lisant à l'autre extrémité); cependant, Debug.Tracefonctionnera toujours si vous avez besoin d'un traçage temporaire pour le débogage.

Vous pouvez trouver des informations de référence plus utiles dans le Guide de l'utilisateur du GHC §16. Exécution de GHC sur les systèmes Win32 .