在我当前的项目中,我有一个文件Tokens.x
需要Tokens.hs
由 Alex 编译。在我的.cabal
文件中,我已Tokens
在该other-modules
部分中列出并cabal build
愉快地创建了该文件。
但是,它在没有指示 Alex 创建文件的 GHC 优化版本的 -g 选项的情况下这样做。当与 GHC 一起使用时,此选项表示扫描速度提高了 10 倍,并且编译速度也提高了一个数量级。
使用 GHC 编译时,如何告诉 cabal 包含 -g 选项?
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。