我已经使用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
没有意义。您必须使用stack2nix
或stackage2nix
之类的工具。
so:使用stack --nix build
构建,堆栈应使用NIX来设置GHC和本机依赖。
当您准备好进行认真的业务(例如自动构建和部署)时,请查看stack2nix
或stackage2nix
,请使用它们将依赖项冻结到nix
文件中,然后使用nix-build
,nix-copy-closure
,CC_20等构建和部署。