Zatrzymaj otwieranie wiersza polecenia podczas uruchamiania pliku exe zbudowanego z projektu haskell

Nov 30 2020

Stworzyłem małą aplikację, która używa biblioteki połysku dla GUI. Po wpisaniu „cabal run [plik cabal]” projekt jest budowany i uruchamiany, a jedynie monituje o GUI. Kiedy zamiast tego idę i klikam plik .exe, który został wygenerowany z kompilacji, otwiera się GUI, ale tak samo jest z wierszem poleceń. Chcę zatrzymać otwieranie wiersza polecenia i mieć otwarte tylko okno z połyskiem.

Odpowiedzi

3 JonPurdy Nov 30 2020 at 20:08

Domyślnie w systemie Windows GHC buduje programy konsoli, które otwierają terminal wiersza polecenia, jeśli jeszcze nie jest otwarty. Jeśli chcesz zbudować program tylko z GUI, możesz przekazać -mwindowlinkerowi, przekazując -optl -mwindowflagę GHC. Jeśli używasz Cabal, powinieneś dodać tę flagę do ghc-optionspola w sekcji wykonywalnej.

Pamiętaj, że jeśli używasz tej flagi, program nie będzie miał żadnego stdin, stdoutlub stderruchwytów plików, tak jak akcje putStrLn, printi getLinenie będzie działać, ponieważ są one równoważne hPutStrLn stdout, hPrint stdoutoraz hGetLine stdin. Jeśli chcesz rejestrować lub drukować, musisz samodzielnie otworzyć uchwyt (np. Plik, terminal lub gniazdo z innym programem odczytującym drugi koniec); Debug.Tracebędzie jednak nadal działać, jeśli potrzebujesz tymczasowego śledzenia do debugowania.

Więcej przydatnych informacji można znaleźć w Przewodniku użytkownika GHC §16. Uruchamianie GHC w systemach Win32 .