如何使用cabal的MIN_VERSION_和其他宏与ghci?

Ben*_*ood 10 haskell ghci cabal

当我MIN_VERSION_在Haskell项目中使用Cabal的各种宏时,如何在不使用cabal时确保它们都被正确定义,例如在GHCi中进行测试时?

Ben*_*ood 21

如今,cabal支持一个cabal repl子命令,它为您完成所有设置,因此至少对于ghci以下内容是不必要的.然而:

cabal build命令生成文件dist/build/autogen/cabal_macros.h,其中包含您需要的所有定义.为了在ghc调用中包含该文件,您需要标记-optP-include -optPdist/build/autogen/cabal_macros.h.

为方便起见,您可以将以下内容放在.ghci项目目录中的文件中:

:set -optP-include -optPdist/build/autogen/cabal_macros.h
Run Code Online (Sandbox Code Playgroud)

因此,每次要使用ghci时都不必输入选项.

但请注意:宏将根据您上次运行时的配置进行定义cabal build,并且在安装新软件包或使用不同的GHC版本时不会更新:因此您需要重新配置和重新构建软件包.

(感谢Simon Hengel在这个智慧的图书馆清单上:http://www.haskell.org/pipermail/libraries/2012-September/018491.html).