Joh*_*ler 5 haskell cabal alex
在我当前的项目中,我有一个Tokens.x需要Tokens.hs由Alex 编译的文件.在我的.cabal文件中,我已Tokens在该other-modules部分中列出,并cabal build愉快地创建该文件.
但是,如果没有-g选项指示Alex创建文件的GHC优化版本,它就会这样做.与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 _ = []
Run Code Online (Sandbox Code Playgroud)
这意味着如果Cabal与GHC一起使用,那么-g当它被用作预处理器时会自动传递给Alex.