Cabal - 在构建库时公开所有模块

Woj*_*ilo 19 haskell cabal

是否可以告诉Cabal在构建库时公开所有模块?

现在我必须在Exposed-modulescabal configurtion文件部分提供很长的模块列表.

Woj*_*ilo 9

现代的答案是stack + hpack而不是使用显式的cabal配置.它可以自动公开包模块并提供许多其他增强功能.


Hea*_*ink 8

您必须列出cabal配置文件中的所有模块.在您的情况下,您只需将模块列表放在后面exposed-module:.没有更简单的方法来编写模块列表.

Cabal无法自动查找属于可执行文件或库的文件,因此它依赖于配置文件中的模块列表.与GHC不同,cabal无法在源代码中找到基于import语句的模块.如果您没有列出每个模块,那么您可以构建项目(因为GHC可以找到源文件),但是其他命令(例如cabal sdist不会访问未列出的源文件).

  • @MikhailGlushenkov这太荒谬了.它可以解析"init"(可能没有人使用过)的import语句,但它不能对任何其他命令执行相同的操作.这绝对是一个问题. (13认同)
  • 如果在非Cabalised源树上运行`cabal init`,它将自动填充`exposed-modules`,但您仍然需要手动更新该字段. (8认同)
  • 有没有可以更新`exposed-modules`的外部工具?或者可以"堆叠"吗? (3认同)