当从 haskell 项目构建 运行 exe 文件时停止打开命令提示符

Stop command prompt from opening when running exe file built from haskell project

我创建了一个使用 gloss 库作为 GUI 的小应用程序。当键入“cabal 运行 [cabal file]”时,项目已构建并 运行,并且仅提示 GUI。当我转而单击从构建生成的 .exe 文件时,GUI 打开,但命令提示符也打开。我想停止打开命令提示符,只打开 gloss 中的 window。

默认情况下 Windows GHC 构建控制台程序,如果尚未打开命令提示符终端,它会打开。如果你想构建一个纯 GUI 程序,你可以通过将 -optl -mwindow 标志传递给 GHC 来将 -mwindow 传递给链接器。如果您正在使用 Cabal,您可以将此标志添加到可执行节中的 ghc-options 字段。

请注意,如果您使用此标志,您的程序将没有任何 stdinstdoutstderr 文件句柄,因此 putStrLnprintgetLine 将不起作用,因为它们等同于 hPutStrLn stdouthPrint stdouthGetLine stdin。如果你想做任何日志记录或打印,你需要自己打开一个句柄(例如一个文件、终端或套接字,另一个程序读取另一端);但是,如果您需要临时跟踪调试,Debug.Trace 仍然有效。

您可以在 GHC User’s Guide §16. Running GHC on Win32 Systems 中找到更多有用的参考信息。