【问题标题】:How does cabal convert flags to ghc options?cabal 如何将标志转换为 ghc 选项?
【发布时间】:2026-01-14 10:25:01
【问题描述】:

我有一个阴谋集团项目,我正在使用 new-build 构建它。我已将库配置为在传递dev 标志时使用-O0,并将-O2 用于生产构建。

我的 cabal 文件中的相关节是

if (flag(dev)) || (flag(library-only))
  ghc-options: -O0
  cpp-options: -DDEVELOPMENT
else
  ghc-options: -O2

但是,如果我选择 cabal new-build -f dev,cabal 会出于某种原因通过 -O1 选项。

我可以通过传入--disable-optimization 来解决这个问题,但我很好奇为什么-f dev 会这样

【问题讨论】:

    标签: cabal cabal-new


    【解决方案1】:

    据我所知,这是因为 cabal 默认通过 -O1,添加 -O0 标志并不会告诉它不通过另一个标志 :-)

    【讨论】: