Я пытаюсь разбить один из моих проектов клики на несколько подбиблиотек, чтобы пользователи не вносили ненужных зависимостей (или зависимостей, которые могут не быть встроены в их платформу!), Поскольку я намерен повторно использовать части моя кодовая база в gh cJs и Eta).
У меня есть следующая настройка в моем файле cabal:
-- core application logic, should be able to be built cross-platform
library bli-base
hs-source-dirs:
src
...
-- library specifically for desktop use, not cross-platform
library bli-cli
hs-source-dirs:
src
build-depends:
base <5,
, bli-base
...
Но проблема в том, когда клика попадает в building bli-cli
, я получаю предупреждение
<no location info>: warning: [-Wmissing-home-modules]
These modules are needed for compilation but not listed in your .cabal file's other-modules:
И затем он перечисляет кучу модулей из bli-base
, которые затем пытается скомпилировать, а затем терпит неудачу, потому что зависимости bli-cli
не являются супернабором зависимостей bli-base
.
Есть ли способ избежать этой проблемы? Я полагаю, что одним из решений было бы просто скопировать все зависимости bli-base в bli-cli, но это не кажется очень DRY.
(я использую стек для сборки с lts -12-26)