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