2017-01-13 3 views
0

F: Wie kann man Cabal (Stack?) -Einstellungen anpassen, so dass app/LogAnalysis.hs schließlich als Hauptprotokoll behandelt wird?Haskell Stack + Cabal ignoriert "Main-is" -Option und kann keine App erstellen

Hier ist, wie ich mir diesen Fehler habe:

  • Erstellt neues Projekt mit stack new xyz
  • Umbenannt app/Main.hs-app/LogAnalysis.hs
  • Angepasst main-is Option in xyz.cabal Datei

Problem I ist Entweder haben diese Daten irgendwie falsch eingegeben oder Kabale ignoriert das neue va lue. Hier wird Fehler erhalte ich:

Preprocessing executable 'WeekTwo-exe' for WeekTwo-0.1.0.0... 

<no location info>: error: 
    output was redirected with -o, but no output will be generated 
because there is no Main module. 

hier relevante Eintrag in xyz.cabal

executable WeekTwo-exe 
    hs-source-dirs:  app 
    main-is:    LogAnalysis.hs 
    ghc-options:   -threaded -rtsopts -with-rtsopts=-N 
    build-depends:  base 
         , WeekTwo 
    default-language: Haskell2010 

Und Modul in Frage:

module LogAnalysis where 
import Log 

main :: IO() 
main = print (parseMessage "I 29 la la") 

Versionen: Stack - Version 1.3.2 GHC - 7.15 Cabal - 1.24.0.0

PS, wenn es von Interesse ist, ich bin der 2. Woche von Haskel Kurs CIS 194.

+0

GHC erfordert, dass das Modul, das die Hauptdatei 'main :: IO() 'benötigt,' Main' genannt wird. Module müssen generell einen Dateipfad haben, der dem Modulnamen entspricht. Sie müssen 'LogAnalysis.hs' wieder zu' Main.hs' umbenennen. – sjakobi

+0

Soll 'main-is' das nicht überschreiben? –

+0

Ich denke, 'main-is' dient nur dazu, auf das rechte 'Main'-Modul zu zeigen, wenn es mehrere gibt. – sjakobi

Antwort

2

Ist es möglich, dass Sie geändert module Main where-module LogAnalysis where doin? Wenn Sie dies tun würden, würden Sie genau diesen Fehler erhalten.

Main-is sagt nur Prüfung für das Main Modul in dieser Datei, aber es muss noch das Main Modul sein, nicht das LogAnalysis Modul. Dies macht deutlich, dass die Hauptfunktion in dieser Datei ausgeführt werden sollte und nicht einige Hauptfunktionen, die möglicherweise in einigen anderen Modulen vorhanden sind.

Verwandte Themen