如何配置cabal以便为32位和64位软件包使用不同的文件夹?

时间:2012-09-12 17:53:05

标签: haskell cabal

我正在对Windows上的64位GHC进行一些测试,同时将代码迁移到GHC 7.6.1。这意味着我安装了32位和64位版本的GHC 7.6.1,因此我可以将64位特定问题与7.6.1的一般问题区分开来。

我的cabal配置文件($APPDATA/cabal/config)包含

libsubdir: $pkgid\$compiler

这意味着我安装的32位和64位版本的软件包最终都在例如zip-archive-0.1.1.8 / ghc-7.6.1,并相互覆盖。

是否有像$compiler之类的变量,但区分32位和64位,或者我可以使用其他技术来保持包装分开?

2 个答案:

答案 0 :(得分:3)

您可以将$arch(和/或$os)与recent enough Cabal versions一起使用,该x86_64将替换为{{1}}等字符串(请参阅Cabal文档部分{{3更多细节)

答案 1 :(得分:2)

这可能不是正确的方法,但在我的笔记本电脑上,我启动了32位和64位操作系统,我有一个黑客设置来处理这个问题。基本上,我有两个目录,.cabal-i386和.cabal-x86_64,我通过符号链接来回切换。在我的.zshrc中:

CabalDir=$HOME/.cabal-`uname -m`
if [ ! -d $CabalDir]; then
    echo WARNING: no cabal directory yet for `uname -m`, creating one.
    mkdir -p $CabalDir/{bin,lib,logs,share}
fi
ln -sft $HOME/.cabal $CabalDir/{bin,lib,logs,share}

也许你可以采用一些类似的策略,给自己一个简短的命令来切换一些符号链接(或任何Windows的符号链接模拟)。