使用stack ghc替代ghc

时间:2017-04-03 17:42:47

标签: haskell-stack

不使用堆栈或cabal分发的包通常具有一组隐含的依赖项。这有时意味着如果不将软件包安装到ghcs全局软件包数据库中,直接在所述软件包上运行ghc将无法工作。

我想用stack ghc替代ghc为此我在shell shell文件中定义了以下内容:

export PATH="`stack path --compiler-bin`:$PATH"

现在命令ghc将使用堆栈的ghc - 它但是与stack ghc相同。例如,它不会加载“snapshot”和“global-project”软件包数据库,可以通过以下命令看到:

$ ghc -v
Glasgow Haskell Compiler, Version 8.0.1, stage 2 booted by GHC version 7.10.3
Using binary package database: ~/.stack/programs/x86_64-linux/ghc-nopie-8.0.1/lib/ghc-8.0.1/package.conf.d/package.cache
...
$ stack ghc -- -v
Glasgow Haskell Compiler, Version 8.0.1, stage 2 booted by GHC version 7.10.3
Using binary package database: ~/.stack/programs/x86_64-linux/ghc-nopie-8.0.1/lib/ghc-8.0.1/package.conf.d/package.cache
Using binary package database: ~/.stack/snapshots/x86_64-linux-nopie/lts-7.9/8.0.1/pkgdb/package.cache
Using binary package database: ~/.stack/global-project/.stack-work/install/x86_64-linux-nopie/lts-7.9/8.0.1/pkgdb/package.cache
...

是否有人指导如何使用stack ghc替代ghc

我目前使用的用例是我获得了一个引用ghc的make文件 - 但是我的机器上没有这个命令。

1 个答案:

答案 0 :(得分:1)

如果在stack exec中执行makefile,它将设置GHC_PACKAGE_PATH环境变量。它还会适当地延长PATH

或者,要在shell中设置此设置,您可以

export GHC_PACKAGE_PATH=`stack path --ghc-package-path`