如何将命令行选项传递给Cabal中的Alex

时间:2014-01-13 20:29:26

标签: haskell cabal alex

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

然而,如果没有-g选项指示Alex创建该文件的GHC优化版本,它就会这样做。与GHC一起使用时,此选项表示扫描速度提高了10倍,编译速度也快了一个数量级。

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

1 个答案:

答案 0 :(得分: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。