Я пытаюсь построить Haskell проект , используя Cabal. У меня есть файл src / Main.hs, который содержит модуль Main и функцию main
. Этот файл запускает веб-интерфейс моего приложения. И у меня есть другой файл, src / CLI.hs, который содержит модуль CLI и функцию main
. Я могу просто запустить его с runhaskell CLI ...
, но я не могу скомпилировать его с помощью cabal.
Дело в том, что даже если я укажу CLI.hs в качестве основного файла (main-is: CLI.hs
), он все равно компилирует проект с main
из src / Main.hs, тем самым давая мне веб-приложение вместо CLI.
Я хочу иметь возможность компилировать два исполняемых файла, один из которых является веб-приложением, а другой - CLI, указав точки входа каждого из них как main
в CLI.hs и main
в Main .hs соответственно.
Вот сегмент файла .cabal, который я использую в данный момент:
executable color-word-analyzer-cli
main-is: CLI.hs
other-modules: AnnotateColors
, CategorizeColor
, ColorMaps
, FindColors
, PlotColors
, Types
, Main
build-depends: base
, lucid
...
, wai-middleware-static
hs-source-dirs: src/
default-language: Haskell2010
executable color-word-analyzer-web
main-is: Main.hs
other-modules: AnnotateColors
, CategorizeColor
, ColorMaps
, FindColors
, PlotColors
, Types
, CLI
build-depends: base
, lucid
...
, wai-middleware-static
hs-source-dirs: src/
default-language: Haskell2010
, который выдает ошибку (среди прочих):
Building executable 'color-word-analyzer-cli' for color-word-analyzer-0.1.0.0..
Warning: Enabling workaround for Main module 'Main' listed in 'other-modules'
illegally!
<no location info>: warning: [-Wmissing-home-modules]
These modules are needed for compilation but not listed in your .cabal file's other-modules:
Main
, который забавно, так как Main
явно указан там в other-modules
.
Я использую cabal версии 3.0.0.0 и gh c версии 8.8.2.