Меня смущает разница между тем, как hs-source-dirs
и other-modules
указаны для test-suite
и executable
компонентов пакета Haskell.
Поскольку, по-видимому, необходимо заново указать модули и исходный каталог моего пакета для executable
, тогда как для test
:
это не нужно.
name: my-pkg
library
exposed-modules: My.Pkg,
My.Pkg.A
other-modules: My.Pkg.B
-- ...
executable myexe
main-is: myexe.hs
hs-source-dirs: ., cli
other-modules: My.Pkg,
My.Pkg.A,
My.Pkg.B
build-depends: base >=4.8.1.0 && <=4.12.0.0,
optparse-applicative >=0.11.0.2,
ansi-terminal >=0.6.2.3,
my-pkg
test-suite my-pkg-check
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Check.hs
build-depends: base >=4.8.1.0 && <=4.12.0.0,
QuickCheck >=2.8,
my-pkg
Все ли это необходимо? Опустили что-то, что позволило бы мне просто иметь
executable myexe
main-is: myexe.hs
hs-source-dirs: cli
build-depends: base >=4.8.1.0 && <=4.12.0.0,
optparse-applicative >=0.11.0.2,
ansi-terminal >=0.6.2.3,
my-pkg
для executable
, как я могу для test-suite
?
Частичная структура каталогов для выше:
├── My
│ ├── Pkg
│ │ ├── A.hs
│ │ └── B.hs
│ └── Pkg.hs
├── cli
│ └── enigma.hs
├── my-pkg.cabal
├── stack.yaml
├── test
│ ├── Check.hs
│ └── Test.hs