Pracuję na stronie internetowej przy użyciu Yesod Mam normalną pracę, ale nie mogę zapełnić mojej bazy danych niezawodnie. Mam drugi program Haskell, że zapełnia bazę danych i Dodałem to do mojego pliku cabal tak: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
Problemem jest to, że gdy uruchamiam „Cabal” build to nie odbudować init, gdy init.hs zmiany. Co muszę zrobić, aby to się stało?
Oto przykład sesja terminala (po init.hs edycji):
$ 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...
Dziękuję.
Tytuł pytania wspomina o wielu plikach wykonywalnych. Czy istnieje inna wykonywalna zwrotka, która nie ma tego problemu w tym samym pliku cabal? – Heatsink
Czy jesteś pewien, że 'init' nie zostanie przebudowany? Będziesz musiał zajrzeć pod 'dist/build', aby zobaczyć nowy plik wykonywalny, lub uruchomić' cabal install', jeśli chcesz, aby nowy plik wykonywalny został umieszczony w innym miejscu. –
Zaktualizowałem fragment kodu cabal powyżej. Kiedy modyfikuję init.hs (który znajduje się w katalogu Init /), nie rekompiluje niczego. Cabal działa i wychodzi bez żadnych wywołań ghc. Mam dowiązanie symboliczne do pliku wykonywalnego w dist/build, którego używam do uruchomienia kodu. – Gregory