
Hi. I have started to use Cabal for a small project where I have to build several executables. The project layout is something like this: / bin/ a.hs b.hs src/ X.hs Y.hs The Cabal configuration file is something like: executable a build-depends: haskell98, base, ... main-is: a.hs hs-source-dirs: src bin other-modules: X This is perfectly reasonable, but it is odd, IMHO. I don't understand why `main-is` is relative to `hs-source-dirs`. What is the rationale? After all, there is only one executable that can be specified in the `executable` block. The configuration file should be, instead (IMHO, of course): executable a build-depends: haskell98, base, ... main-is: bin/a.hs hs-source-dirs: src other-modules: X Another "problem" I have noted, is that if I specify `main-is` field two times, no error is reported. Simply, Cabal uses the last directive. One last thing: is it possible to define "macros" in Cabal? In my package, I have n executables, that have many dependencies in common. I would like to avoid having to repeat the same dependencies for each executable block. Thanks Manlio Perillo