4

我正在 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 位,或者我可以使用其他技术来使其保持包分开?

4

2 回答 2

3

您可以将$arch(and/or $os) 与足够近的 Cabal 版本一起使用,它将被一个字符串替换,例如x86_64(有关更多详细信息,请参阅 Cabal 文档部分“简单构建系统中的路径变量”

于 2012-10-01T13:12:47.247 回答
2

这可能不是正确的方法,但是在我启动到 32 位和 64 位操作系统的笔记本电脑上,我设置了一个 hack 来处理这个问题。基本上,我有两个目录,.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 的符号链接模拟)。

于 2012-09-12T18:29:22.333 回答