11

Yesod を使用して Web サイトで作業しています。通常のビルドを実行していますが、データベースに確実にデータを入力できないようです。データベースにデータを入力する2番目の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.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...

ありがとうございました。

4

1 に答える 1

6

cabal buildおよびに引数として渡すことで、複数の実行可能ファイルを管理できますcabal run。たとえば、cabal build init. ターゲット名が指定されていない場合、最初の実行可能ファイルがデフォルトになります。

于 2013-09-23T20:49:07.960 に答える