如何在Nix-Shell内使用已安装的GHC与堆栈



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

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

可以通过运行stack setup命令来修复这一点。但是我担心这会再次安装ghc,在我的计算机上耗尽更多空间,等等。是否可以在不运行stack setup命令的情况下使用已安装的ghc

我不确定您是如何设置项目的,但可能最简单但有限的方法是使用stack的Nix集成,该集成将使用nix的GHC和本机依赖关系。p>不幸的是,堆栈NIX集成相当倒退。它不会使用NIX来构建您的软件包,只是为了创建具有GHC和本机依赖性的环境。您必须使用堆栈本身来构建项目,并且由于Stack将运行Cabal,因此它仍应与标志一起使用。堆栈NIX集成不会生成一个.nix文件,而堆栈已解决的依赖项,因此您无法使用nix-build构建项目,并且输入nix-shell没有意义。您必须使用stack2nixstackage2nix之类的工具。

so:使用stack --nix build构建,堆栈应使用NIX来设置GHC和本机依赖。

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

相关内容

  • 没有找到相关文章

最新更新