Haskell Stack 的默认 GHC 标志

Posted

技术标签:

【中文标题】Haskell Stack 的默认 GHC 标志【英文标题】:Default GHC flags with Haskell Stack 【发布时间】:2018-02-15 23:55:25 【问题描述】:

我想为我的机器上的所有堆栈编译包设置一些自定义编译器标志(比默认值更积极的优化),并遵循stack guide,我添加了一些ghc-options(适用于"$everything")到我的~/.stack/config.yaml。这些标志已正确应用于任何项目目录之外的 stack 调用。

然而,在项目目录中,stack.yaml 选项不只是优先; ~/.stack/config.yaml 中的所有内容都被完全忽略了!我没有在任何项目本地 stack.yaml 文件中指定 ghc-options,但指定的 ~/.stack/config.yaml 无效。

stack documentation 似乎暗示选项应该崩溃,正如我所期望的那样:

stack 有两层配置:项目和非项目。所有这些都存储在 stack.yaml 文件中,但前者有额外的字段(解析器、包、额外的deps和标志)。 后者可以单向组合,以便系统配置文件提供默认值,用户可以使用 ~/.stack/config.yaml 覆盖这些默认值,并且项目可以进一步自定义。

除非我对“自定义”的含义有非常不同的想法,否则这不是我观察到的行为。是我做错了什么,还是文档在这方面具有误导性?

【问题讨论】:

【参考方案1】:

是的,我认为这是一个错误。我有一个尚未合并的 PR 已修复它https://github.com/commercialhaskell/stack/pull/3781

【讨论】:

以上是关于Haskell Stack 的默认 GHC 标志的主要内容,如果未能解决你的问题,请参考以下文章

在 Opensuse 42.3 上为 haskell 堆栈设置 ghc-8.2.1 时出现 ghc 完整性检查错误

我如何分析GHC用于使用Stack编译项目的内存量?

奇怪的 Haskell 'stack' 错误:“无法加载 .so/.DLL”“不是可写段”

Intero总是安装隔离的GHC

Haskell 的 GHC 未安装

Ghc:部分编译 Haskell 代码?