Haskell 阴谋集团多个可执行文件
我正在使用Yesod开发一个网站,我的正常构建正在运行,但我似乎无法可靠地填充我的数据库。我有第二个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
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...