Evite que el símbolo del sistema se abra al ejecutar un archivo exe creado a partir del proyecto haskell

Nov 30 2020

He creado una pequeña aplicación que usa la biblioteca de brillo para una GUI. Al escribir "cabal run [cabal file]", el proyecto se construye y ejecuta, y solo solicita la GUI. Cuando en su lugar voy y hago clic en el archivo .exe que se generó a partir de la compilación, se abre la GUI, pero también lo hace el símbolo del sistema. Quiero evitar que se abra el símbolo del sistema y solo tener abierta la ventana de brillo.

Respuestas

3 JonPurdy Nov 30 2020 at 20:08

De forma predeterminada en Windows, GHC crea programas de consola, que abren una terminal de símbolo del sistema si aún no está abierta. Si desea crear un programa solo con GUI, puede pasar -mwindowal vinculador dándole la -optl -mwindowbandera a GHC. Si está usando Cabal, agregaría esta bandera al ghc-optionscampo en la estrofa ejecutable.

Tenga en cuenta que si se utiliza esta bandera, su programa no tendrá ningún stdin, stdout, o stderrlos identificadores de archivo, así como las acciones putStrLn, printy getLineno va a funcionar, ya que son equivalentes a hPutStrLn stdout, hPrint stdouty hGetLine stdin. Si desea realizar algún registro o impresión, deberá abrir un identificador usted mismo (por ejemplo, un archivo, terminal o conector con otro programa leyendo el otro extremo); sin embargo, Debug.Traceseguirá funcionando si necesita un seguimiento temporal para la depuración.

Puede encontrar información de referencia más útil en la Guía del usuario de GHC §16. Ejecución de GHC en sistemas Win32 .