title: Cabal Multiple Executables
body: <p>I'm working on a website using Yesod I have the normal build running but I can't seem to populate my database reliably. I have a second haskell program that populates the database and I've added it to my cabal file like this:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>The problem is that when I run 'cabal build' it does not rebuild init when init.hs changes. What do I have to do to make this happen?</p>
  
  <p>Here's an example terminal session (after editing init.hs):</p>
  
  <pre><code>$ 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...
  </code></pre>
  
  <p>Thank you.</p>