繁体   English   中英

如何将我的包裹标记为特定于ghc?

[英]How do I mark my package as depending on ghc specifically?

我的程序包取决于GHC中的一些实现细节(不仅仅是语言扩展)。 我应该如何在我的.cabal文件中表达这种依赖性? 我是不是该? 我只是偏执吗?

build-depends

我认为也许应该将ghc添加到build-depends列表中,但是没有ghc软件包

ghc-mod的依赖项列表启发,我还是尝试了一下。 我添加了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包属性 但是,这似乎并不影响构建。 我添加了以下tested-with: GHC==7.20 (不存在的GHC版本,但比我的7.10.3更新),但是cabal build仍然构建了我的软件包,甚至没有发出警告或任何警告。

ghc 一个软件包,不是一个魔术包。 它不是关于Hackage的软件包。 而是它与您的ghc安装一起安装,并且默认情况下是隐藏的。 您可以在ghc-pkg list的输出中看到它。 它为编译器提供了一个API。 如果您实际上没有使用它,则不应依赖它。 通常,除非真正需要,否则大多数人不会将自己固定在GHC上。 例如,您确定您的软件包不会与GHCjsHaste一起编译吗? 所以,为什么要提前限制自己...

如果您可以在ghc中使用没有实现细节的程序包,但也可以以“长期”方式执行更昂贵的操作,则可以使用cabal提供的宏在代码中使用CPP条件,以便根据以下条件提供不同的结果对GHC的测试。

tested-with确实按照惯例使用一个纯粹的信息场。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM