bal将Haskell依赖关系的版本固定到基础原生依赖关系的版本

bal将Haskell依赖关系的版本固定到基础原生依赖关系的版本

本文介绍了如何使用Cabal将Haskell依赖关系的版本固定到基础原生依赖关系的版本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的特殊情况下,我在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:


  1. 在.cabal文件中定义两个标志- use10 和 use11 选择要使用的 bindings-libzip 版本。

  2. 在自定义的Setup.hs中确定要使用的版本。

  3. 找到-flags = ... arg并进行修改在将其传递给 defaultMainWithHooksArgs 之前进行适当的设置。

  1. Define two flags in the .cabal file - use10 and use11 to select which version of bindings-libzip to use.
  2. In your custom Setup.hs determine which version to use.
  3. Find the "--flags=..." arg and modify it appropriately before passing it along to defaultMainWithHooksArgs.

这篇关于如何使用Cabal将Haskell依赖关系的版本固定到基础原生依赖关系的版本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 11:39