6

在我当前的项目中,我有一个文件Tokens.x需要Tokens.hs由 Alex 编译。在我的.cabal文件中,我已Tokens在该other-modules部分中列出并cabal build愉快地创建了该文件。

但是,它在没有指示 Alex 创建文件的 GHC 优化版本的 -g 选项的情况下这样做。当与 GHC 一起使用时,此选项表示扫描速度提高了 10 倍,并且编译速度也提高了一个数量级。

使用 GHC 编译时,如何告诉 cabal 包含 -g 选项?

4

1 回答 1

5

AFAIK,使用 Cabal,您目前只能在配置文件中或通过命令行指定程序选项,但不能在.cabal文件中指定。

关于这个有一个未解决的问题:https ://github.com/haskell/cabal/issues/1223

但是,查看 的来源Cabal,我发现您的特定问题似乎默认已解决。中Distribution.Simple.PreProcess,有:

ppAlex :: BuildInfo -> LocalBuildInfo -> PreProcessor
ppAlex _ lbi = pp { platformIndependent = True }
  where pp = standardPP lbi alexProgram (hcFlags hc)
        hc = compilerFlavor (compiler lbi)
        hcFlags GHC = ["-g"]
        hcFlags _ = []

这意味着如果 Cabal 与 GHC 一起使用,那么-g当它被用作预处理器时会自动传递给 Alex。

于 2014-01-13T21:33:15.970 回答