如何将cabal haddock输出重定向到其他指定文件夹?
cabal haddock 自定义输出目录的实现方法
目前有两类成熟的可行方案,可根据自己的使用场景选择:
- 方案一:修改全局构建产物根目录
执行cabal haddock命令时追加--builddir参数,自定义整个cabal构建工作区的根路径,haddock生成的文档会作为构建产物的一部分,存放在你指定的根目录对应的层级下。比如要把所有构建产物(含编译中间文件、文档、二进制文件)统一放到项目根目录下的build文件夹,直接执行:
这种方式适合完全不想使用默认cabal haddock --builddir=./builddist-newstyle目录的场景,所有cabal生成的文件都会统一归集到你指定的目录,不会在项目里多出额外的构建文件夹。 - 方案二:单独指定haddock文档输出路径,不改动其他构建产物位置
如果只想把最终生成的haddock文档提取到自定义目录,其他编译中间产物还是保留在默认的dist-newstyle路径下,可以通过参数透传的方式,把haddock程序本身的输出目录配置传给底层程序:
执行完命令后,完整的可浏览haddock文档会直接生成到你指定的cabal haddock --haddock-options="--odir=./target-doc-folder"./target-doc-folder路径下,不需要再去dist-newstyle下的多层嵌套目录里查找。注意这种方式下cabal仍会在默认路径下留存一份文档的关联索引文件,不影响自定义路径下文档的正常使用。
如果需要长期固定配置,不需要每次执行命令都手动加参数,可以在项目根目录创建cabal.project文件,写入对应配置即可永久生效:
-- 固定所有构建产物放到./build目录 builddir: ./build -- 或者固定haddock文档单独输出到./docs目录 package * haddock-options: --odir=./docs
内容的提问来源于stack exchange,提问作者Liisi
相关产品推荐
相关产品推荐

