问题描述
在我的特殊情况下,我在Haskell软件包时,使用 bindings-libzip-0.10 code>的 libzip ?
Is there any way I can specify in my .cabal file to use bindings-libzip-0.11 if and only if pkg-config detects version 0.11 of libzip and to use bindings-libzip-0.10 if and only if pkg-config detects version 0.10 of libzip?
推荐答案
我正在提交另一个答案,因为这使用了另一个主意...
I'm submitting another answer because this uses another idea...
使用自定义Setup.hs和 defaultMainWithHooksArgs 可以使您检查并将args修改为 cabal configure 命令。
Using a custom Setup.hs with defaultMainWithHooksArgs allows you to inspect and modify the args to the cabal configure command.
这是Setup.hs,它不做任何修改:
This is a Setup.hs which does no modification:
import Distribution.Simple import Distribution.Simple.Configure import System.Environment main = do args <- getArgs defaultMainWithHooksArgs simpleUserHooks args
如果您的.cabal文件已定义标志,例如:
If your .cabal file has a flag defined, e.g.:
Flag Foo Default: False
然后在args中您将看到-flags = -foo 。因此,想法是:
then in the args you will see "--flags=-foo". So the idea is:
- 在.cabal文件中定义两个标志- use10 和 use11 选择要使用的 bindings-libzip 版本。
- 在自定义的Setup.hs中确定要使用的版本。
- 找到-flags = ... arg并进行修改在将其传递给 defaultMainWithHooksArgs 之前进行适当的设置。
- Define two flags in the .cabal file - use10 and use11 to select which version of bindings-libzip to use.
- In your custom Setup.hs determine which version to use.
- Find the "--flags=..." arg and modify it appropriately before passing it along to defaultMainWithHooksArgs.
这篇关于如何使用Cabal将Haskell依赖关系的版本固定到基础原生依赖关系的版本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!