如何根据具体的ghc标记我的包裹?

时间:2016-03-04 07:26:48

标签: haskell ghc cabal

我的包依赖于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仍然构建了我的包,甚至没有发出警告或任何东西。

1 个答案:

答案 0 :(得分:1)

ghc 一个包,而不是一个神奇的包。这不是Hackage的一个包。相反,它与您的ghc安装一起安装,默认情况下是隐藏的。您可以在ghc-pkg list的输出中看到它。它公开了编译器的API。如果你实际上没有使用它,你不应该依赖它。一般来说,大多数人将自己固定在GHC上,除非他们确实需要。例如,您确定您的软件包是否无法使用GHCjsHaste进行编译?那么,为什么要提前限制自己...

如果您可以在没有ghc中的实现细节的情况下使用您的软件包,但也可以使用更昂贵的“纵向”方式执行操作,则可以使用cabal提供的宏在代码中使CPP条件有所不同结果基于GHC的测试。

tested-with确实是惯​​例使用的纯粹信息领域。