默认 GHC 标志 Haskell Stack

Default GHC flags with Haskell Stack

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

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

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

stack has two layers of configuration: project and non-project. All of these are stored in stack.yaml files, but the former has extra fields (resolver, packages, extra-deps, and flags). The latter can be monoidally combined so that a system config file provides defaults, which a user can override with ~/.stack/config.yaml, and a project can further customize.

除非我对 "customize" 的含义有完全不同的看法,否则这不是我观察到的行为。是我做错了什么,还是文档在这方面有误导性?

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