Несколько исполняемых файлов Cabal

Я работаю над веб-сайтом с использованием Yesod. У меня обычная работа по созданию, но я не могу надежно заполнить свою базу данных. У меня есть вторая программа haskell, которая заполняет базу данных, и я добавил ее в свой файл cabal следующим образом:

executable         program
  if flag(library-only)
    Buildable: False

  main-is:           ../main.hs
  hs-source-dirs:    dist
  build-depends:     base
                   , myproject
                   , yesod-default

executable         init
  if flag(library-only)
    Buildable: False

  main-is:           init.hs
  hs-source-dirs:    Init
  build-depends:     base
                   , directory
                   , persistent
                   , persistent-sqlite
                   , text
                   , myproject
                   , yesod-default

Проблема заключается в том, что при запуске "cabal build" он не восстанавливает init при смене init.hs. Что мне нужно сделать, чтобы это произошло?

Здесь пример сеанса терминала (после редактирования init.hs):

$ cabal build
Building myproject-0.0.0...
Preprocessing library myproject-0.0.0...
Registering myproject-0.0.0...
$ rm -rf dist/build/myproject/init
$ cabal build
Building myproject-0.0.0...
Preprocessing library myproject-0.0.0...
Registering myproject-0.0.0...

Спасибо.

Ответ 1

Вы можете управлять несколькими исполняемыми файлами, передавая их в качестве аргументов cabal build и cabal run. Например, cabal build init. Первый исполняемый файл является значением по умолчанию, если не указано имя цели.