假设我有一个使用Cabal打包和构建的库,并且某些模块Internal
不在我的cabal文件Exposed-modules
中。如果我指定一个pragma
{-# OPTIONS_HADDOCK hide #-}
位于Internal.hs
的顶部,还是已经根据Haddock自动隐藏了?
如果它确实有所作为,它会产生什么影响?
答案 0 :(得分:4)
如果使用--internal
标记创建包的haddocks到cabal haddock
,确实会有所不同。
$ cabal help haddock
Usage: cabal haddock [FLAGS]
Flags for haddock:
-h --help Show this help text
-v --verbose[=n] Control verbosity (n is 0--3, default verbosity
level is 1)
<snip>
--executables Run haddock for Executables targets
--internal Run haddock for internal modules and include all
symbols
<snip>
如果创建的haddocks没有--internal
标志,则hide
模块属性无效:无论如何都没有为模块创建文档。
如果给出了--internal
,则会为未公开的模块创建文档,但指定hide
属性的文档除外。
换句话说,如果未设置{em}并且指定hide
或导出模块,则会生成文档。
可以使用--internal
指定--internal
cabal haddock
,或者手动调用cabal install --haddock-internal
或使用cabal haddock
界面。
大多数人只使用默认选项运行runhaskell ./Setup.hs ...
,因此只有少数人会观察到差异。