Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 阴谋集团多个可执行文件_Haskell_Cabal - Fatal编程技术网

Haskell 阴谋集团多个可执行文件

Haskell 阴谋集团多个可执行文件,haskell,cabal,Haskell,Cabal,我正在使用Yesod开发一个网站,我的正常构建正在运行,但我似乎无法可靠地填充我的数据库。我有第二个haskell程序填充数据库,并将其添加到我的阴谋集团文件中,如下所示: executable program if flag(library-only) Buildable: False main-is: ../main.hs hs-source-dirs: dist build-depends: base

我正在使用Yesod开发一个网站,我的正常构建正在运行,但我似乎无法可靠地填充我的数据库。我有第二个haskell程序填充数据库,并将其添加到我的阴谋集团文件中,如下所示:

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.hs更改时,它不会重新生成init。我该怎么做才能做到这一点

下面是一个终端会话示例(编辑init.hs后):


谢谢。

您可以通过将多个可执行文件作为参数传递给
cabal build
cabal run
来管理它们。例如,
cabalbuildinit
。如果没有给出目标名称,则默认为第一个可执行文件。

问题标题提到多个可执行文件。在同一个阴谋集团文件中是否还有另一个可执行节没有这个问题?您确定
init
没有被重建吗?您必须在
dist/build
下查看新的可执行文件,或者运行
cabal install
以将新的可执行文件放到其他地方。我已更新了上面的cabal代码段。当我修改init.hs(位于init/目录中)时,它不会重新编译任何内容。阴谋集团在没有任何ghc调用的情况下运行和退出。我有一个符号链接到我用来运行代码的dist/build中的可执行文件。我可能不太明白你在这里做什么:对于
可执行程序
,为什么你要将
hs source dirs
设置为cabal的
dist/
文件夹,然后说
main在该文件夹之外,在当前文件夹中?我以前从未见过这种情况,也不明白它的用意是什么。
$ 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...