Cabal Multiple Executables

Gre*_*ory 10 haskell 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
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行'cabal build'时,它不会在init.hs更改时重建init.我该怎么做才能实现这一目标?

这是一个示例终端会话(在编辑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...
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ant*_*ony 5

您可以通过将多个可执行文件作为参数传递给cabal build和来管理多个可执行文件cabal run。例如,cabal build init。如果未提供目标名称,则第一个可执行文件是默认文件。