Производство многочисленных исполняемых файлов из единственного проекта

Со следующей структурой проекта:

src/FirstExecutable.hs
src/SecondExecutable.hs
my-amazing-project.cabal

и следующая установка интриги:

name:               my-amazing-project
version:            0.1.0.0
build-type:         Simple
cabal-version:      >=1.8

executable first-executable
  hs-source-dirs:   src
  main-is:          FirstExecutable.hs
  ghc-options:      -O2 -threaded -with-rtsopts=-N
  build-depends:    base == 4.5.*

executable second-executable
  hs-source-dirs:   src
  main-is:          SecondExecutable.hs
  ghc-options:      -O2 -threaded -with-rtsopts=-N
  build-depends:    base == 4.5.*

Управление , интрига устанавливает , терпит неудачу со следующей продукцией:

Installing executable(s) in
/Users/mojojojo/Library/Haskell/ghc-7.4.2/lib/my-amazing-project-0.1.0.0/bin
cabal: dist/build/second-executable/second-executable: does not exist
Failed to install my-amazing-project-0.1.0.0
cabal: Error: some packages failed to install:
my-amazing-project-0.1.0.0 failed during the final install step. The exception
was:
ExitFailure 1

Что я делаю неправильно, или действительно ли это - ошибка Интриги?


Содержание выполнимых модулей следующие:

module FirstExecutable where

main = putStrLn "Running FirstExecutable"

и

module SecondExecutable where

main = putStrLn "Running SecondExecutable"
17
добавлено отредактировано
Просмотры: 2
nl ja de
@Satvik I' ve просто узнал решение. Регистрация его
добавлено автор Nikita Volkov, источник
Это работает на меня.
добавлено автор Satvik, источник
вы не должны использовать модуль.. в исполняемом файле. или можно использовать модуль, Главный
добавлено автор Satvik, источник

1 ответы

интрига ожидает, что модуль исполняемого файла, чтобы быть Главный . Необходимо пропустить линию модуля или использование модуль, Главный где .

Хорошо вот возможная причина. Исполняемый файл haskell программы не создан, когда модуль не Главный , когда вы на самом деле собираете программу. , главный функция , Главный , модуль используется, когда исполняемым файлом управляют. Возможная работа для ghc "главный," флаг. Таким образом, у вас может быть что-то как

name:               my-amazing-project
version:            0.1.0.0
build-type:         Simple
cabal-version:      >=1.8

executable first-executable
  hs-source-dirs:   src
  main-is:          FirstExecutable.hs
  ghc-options:      -O2 -threaded -with-rtsopts=-N -main-is FirstExecutable
  build-depends:    base == 4.5.*

executable second-executable
  hs-source-dirs:   src
  main-is:          SecondExecutable.hs
  ghc-options:      -O2 -threaded -with-rtsopts=-N -main-is SecondExecutable
  build-depends:    base == 4.5.*
20
добавлено
Да, that' s точно, что I' ve, просто узнанный случайно после пребывания в течение нескольких часов на googling и избиении меня вокруг. Вполне откровенно I' m разбитый тем, почему они выбрали такое запутывающее поведение. Ужасное проектное решение IMO
добавлено автор Nikita Volkov, источник
Спасибо @MikhailGlushenkov. Так, парни Интриги идут вразрез со стандартом, позволяя пользователю объявить "Главные" модули названными по-другому. Подобные вещи должны быть отмечены смело в документации, все же there' s не слово об этом, ни фактической проблеме в нем. (Если кто-то с доступом к нему читает этот комментарий, пожалуйста, сделайте заметки).
добавлено автор Nikita Volkov, источник
Спасибо @Satvik.
добавлено автор Nikita Volkov, источник
Cabal' s главный - и GHC' s , "главный," </ код> делают разные вещи. Cabal' s главный - </ код> просто позволяет вам определить имя файла , где главный модуль расположен, но имя модуля все еще должно быть Главный (т.е. декларация модуля в файле). GHC' s , "главный," </ код> позволяет имени модуля или , главный имя функции быть чем-то еще.
добавлено автор shang, источник
@NikitaVolkov Это поведение получает мандат языковой стандарт - "Программа Хаскелла - коллекция модулей, один из которых, в соответствии с соглашением, нужно назвать Главным и должен экспортировать главную стоимость"..
добавлено автор Mikhail Glushenkov, источник
@NikitaVolkov , "главный," </ код> является расширением GHC. It' s описанный в документации GHC.
добавлено автор Mikhail Glushenkov, источник
@NikitaVolkov Вы видите возможную работу, которую я предложил в обновленном ответе.
добавлено автор Satvik, источник