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 完整性检查错误