
On Thu, Oct 27, 2011 at 10:02 AM, Konstantin Litvinenko
I am trying to understand how to organize my code and edit-compile-run cycles. I can't figure out how to setup environment in such why that when I build some program using cabal, cabal will rebuild program dependencies if some was changed. I don't want to configure/build/install manually. Having program 'foo' depends on lib 'bar' I want to edit some files in 'bar' than build 'foo' and get 'bar' rebuilt and 'foo' rebuilt/relink. How can I do this?
I use make. I think cabal may not have any understanding of rebuilding dependencies, it just calls ghc --make, which does dependency resolution on its own, but only for one target. You could just always build all the deps and rely on ghc --make to figure out if any recompilation need be done, but it will get slow as the number of files increases. There's a haskell-using build system called "shake" that shows promising, but the open source version openshake seems to be on hold at the moment. So as far as I know there isn't really a build system for larger or cross language haskell repos beyond make (I've played with waf some, that also might be a possibility).