2017-01-13 13 views
0

В: Как настроить параметры каббала (стек?), Так что app/LogAnalysis.hs рассматривается как основной журнал?Haskell Stack + Cabal игнорирует опцию «main-is» и не удается создать приложение

Вот как я себе эту ошибку:

  • Создан новый проект с stack new xyz
  • ПЕРЕИМЕНОВАНА app/Main.hs в app/LogAnalysis.hs
  • Скорректированный main-is вариант в xyz.cabal файл

Проблема Я либо неправильно ввели эти данные, либо кабальт игнорирует этот новый va ЛУЭ. Здесь ошибка я получаю:

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. 

Вот соответствующая запись в 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 

И модуль вопрос:

module LogAnalysis where 
import Log 

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

Версии: Stack - Версия 1.3.2 GHC - 7.15 Cabal - 1.24.0.0

PS, если это какой-либо интерес, что я делаю вторую неделю Haskel конечно СНГ 194.

+0

GHC требует, чтобы модуль, который требует главного 'main :: IO()', называется 'Main'. Обычно модули должны иметь путь к файлу, соответствующий имени модуля. Вам придется снова переименовать 'LogAnalysis.hs' в' Main.hs'. – sjakobi

+0

Не 'main-is' должен переопределить это? –

+0

Я думаю, что 'main-is' служит только для указания правильного модуля' Main', когда его несколько. – sjakobi

ответ

2

Возможно ли вы изменили module Main where к module LogAnalysis where? Если вы это сделали, вы получите именно эту ошибку.

Main-is просто говорит чек на Main модуль внутри этого файла, но она все равно должна быть модуль Main, не LogAnalysis модуль. Это дает понять, что основная функция в этом файле должна быть запущена, а не некоторые основные функции, которые могут существовать в некоторых других модулях.