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

时间:2012-09-22 18:52:40

标签: haskell cabal ghci

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

1 个答案:

答案 0 :(得分: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

这样您就不必在每次使用ghci时都输入选项。

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

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