当我在Haskell项目中使用Cabal的各种MIN_VERSION_
宏时,如何在不使用Cabal的情况下确保它们均正确定义,例如在GHCi中进行测试时?
最佳答案
如今,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版本时不会更新:为此,您需要重新配置并重建软件包。(感谢库 list 上的Simon Hengel的智慧:http://www.haskell.org/pipermail/libraries/2012-September/018491.html)。
关于haskell - 如何在ghci中使用cabal的MIN_VERSION_和其他宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12546757/