Sto lavorando a un sito Web utilizzando Yesod. Ho il normale build in esecuzione ma non riesco a popolare il mio database in modo affidabile. Ho un secondo programma Haskell che popola il database e ho aggiunto al mio file di cabala in questo modo:Cabal Multiple Executables
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
Il problema è che quando faccio funzionare 'costruire cabala' non ricostruire init quando init.hs i cambiamenti. Cosa devo fare per farlo accadere?
Ecco una sessione di esempio terminale (dopo la modifica 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...
Grazie.
Il titolo della domanda menziona più eseguibili. C'è un'altra stanza eseguibile che non ha questo problema nello stesso file di cabala? – Heatsink
Sei sicuro che 'init' non viene ricostruito? Dovrai guardare sotto 'dist/build' per vedere il nuovo eseguibile, o eseguire' cabal install' se vuoi che il nuovo eseguibile sia messo altrove. –
Ho aggiornato lo snippet di cabala qui sopra. Quando modifico init.hs (che si trova all'interno della directory Init /) non ricompila nulla. cabal corre ed esce senza invocazioni ghc. Ho un link simbolico all'eseguibile in dist/build che sto usando per eseguire il codice. – Gregory