2

我已经ghc使用stack构建工具安装了。它编译我的项目。但是当我进入nix-shell项目目录并想从中编译我的项目时,nix-shell我看到如下错误:

No compiler found, expected minor version match with ghc-8.0.2

这可以通过运行stack setup命令来修复。但我担心这会ghc再次安装,在我的机器上消耗更多空间等等。有没有办法在不运行命令的情况下使用已经安装ghc的?nix-shellstack setup

4

1 回答 1

2

我不确定您如何设置项目,但可能最简单(但有限)的方法是使用堆栈的nix 集成,它将使用 GHC 和来自nix.

不幸的是,堆栈 nix 集成相当落后。它不使用 nix 来构建你的包,只是为了创建一个具有 GHC 和本机依赖项的环境。您必须使用 stack 本身来构建项目,并且由于 stack 将运行 cabal,它仍然应该与 flag 一起使用。stack nix 集成不会生成一个 .nix 文件,其中的依赖项由 stack 解决,因此您无法使用它构建项目,nix-build并且输入 .nix 没有任何意义nix-shell。您将不得不使用类似stack2nix或的工具stackage2nix

所以:build withstack --nix build和 stack 应该使用 nix 来设置 GHC 和原生依赖。

当您准备好进行严肃的业务(例如自动构建和部署)时,请查看stack2nixor stackage2nix,使用它们将依赖项冻结到nix文件中,然后使用构建和部署nix-buildnix-copy-closure

于 2018-03-09T15:03:47.840 回答