我已使用ghc
构建工具安装了stack
。它编译了我的项目。但是当我在项目目录中输入nix-shell
并希望从nix-shell
编译我的项目时,我看到如下错误:
No compiler found, expected minor version match with ghc-8.0.2
可以通过运行stack setup
命令来解决此问题。但是我担心这会在我的计算机上再次安装ghc
一次耗费更多空间等等。如果没有运行ghc
,是否可以使用已安装nix-shell
stack setup
pom.xml
|
|
-----sub module A pom.xml
|
|
-----sub module B pom.xml
|
|
-----sub module plugins/C pom.xml
|
|
-----sub module plugins/D pom.xml
命令?
答案 0 :(得分:2)
我不确定你是如何设置项目的,但可能最简单(但有限)的方法是使用堆栈的nix integration,它将使用来自{{1的GHC和本机依赖项}}
不幸的是,堆栈nix集成相当倒退。它没有使用nix来构建你的包,只是为了创建一个GHC和本机依赖的环境。你必须使用堆栈本身来构建项目,并且由于堆栈将运行cabal,它仍然应该使用标志。堆栈nix集成不会生成.nix文件,其依赖项由堆栈解析,因此您无法使用nix
构建项目,并且无法输入nix-build
。您必须使用nix-shell
或stack2nix
之类的工具。
所以:使用stackage2nix
构建并且堆栈应该使用nix来设置GHC和本机依赖项。
当您为认真的业务做好准备(例如自动构建和部署)时,请查看stack --nix build
或stack2nix
,使用它们将依赖项冻结到stackage2nix
文件中,然后使用nix
,nix-build
等构建和部署