我的包依赖于GHC中的一些实现细节(不仅仅是语言扩展)。我应该如何在我的.cabal文件中表达这种依赖?我是不是该?我只是偏执狂吗?
build-depends
我想也许我应该将ghc
添加到build-depends
列表中,但是没有ghc package。
受到ghc-mod's dependency list的启发,无论如何我都试过了。我添加了build-depends: ghc >= 7.20
,当我只安装了7.10.3时,这就产生了预期的失败。 (7.20在撰写本文时甚至不存在。)
cabal.exe: At least the following dependencies are missing:
ghc >=7.20
ghc
是某种魔法套餐吗?什么是其他魔术包?
tested-with
tested-with
package property。但是,这似乎不会影响构建。我添加了tested-with: GHC==7.20
(GHC版本不存在但比7.10.3更新),但cabal build
仍然构建了我的包,甚至没有发出警告或任何东西。
答案 0 :(得分:1)
ghc
是一个包,而不是一个神奇的包。这不是Hackage的一个包。相反,它与您的ghc安装一起安装,默认情况下是隐藏的。您可以在ghc-pkg list
的输出中看到它。它公开了编译器的API。如果你实际上没有使用它,你不应该依赖它。一般来说,大多数人不将自己固定在GHC上,除非他们确实需要。例如,您确定您的软件包是否无法使用GHCjs
或Haste
进行编译?那么,为什么要提前限制自己...
如果您可以在没有ghc中的实现细节的情况下使用您的软件包,但也可以使用更昂贵的“纵向”方式执行操作,则可以使用cabal提供的宏在代码中使CPP条件有所不同结果基于GHC的测试。
tested-with
确实是惯例使用的纯粹信息领域。