默认 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
我想为我机器上的所有堆栈编译包设置一些自定义编译器标志(比默认设置更积极的优化),并且在 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