使用nix在不拆分对象文件的情况下构建haskell项目
在Gabriel Gonzalez关于与nix一起构建haskell项目的教程中,他写道: 默认情况下,使用GHC的使用nix在不拆分对象文件的情况下构建haskell项目,haskell,ghc,nix,Haskell,Ghc,Nix,在Gabriel Gonzalez关于与nix一起构建haskell项目的教程中,他写道: 默认情况下,使用GHC的-fsplit objs标志编译这些库,以启用拆分对象文件,这会减少库的大小,但增加编译时间。这是我建议在开发期间使用cabal构建根项目的另一个原因,因为默认情况下cabal不会使用拆分对象进行编译,因此构建速度会更快。但是,当Nix构建项目时,-fsplit objs是一个很好的默认值,因此您不需要更改此设置 没有提到的是如何让nix在没有-fsplit objs的情况下构建h
-fsplit objs
标志编译这些库,以启用拆分对象文件,这会减少库的大小,但增加编译时间。这是我建议在开发期间使用cabal构建根项目的另一个原因,因为默认情况下cabal不会使用拆分对象进行编译,因此构建速度会更快。但是,当Nix构建项目时,-fsplit objs
是一个很好的默认值,因此您不需要更改此设置
没有提到的是如何让nix在没有
-fsplit objs
的情况下构建haskell项目。在我的例子中,我有一个后端项目(使用GHC构建)、一个前端项目(使用GHCJS构建)和一个共享项目(使用两者构建)。重建共享项目有点常见,因此能够关闭-fsplit objs
将节省我大量的编译时间。我认为您希望在mkDerivation中使用enableDeadCodeElimination=false
。我认为您希望在mkDerivation中使用enableDeadCodeElimination=false