迭代给定包中的所有模块(文件)的最佳方法是什么?具体地说,假设我有
最简单的执行方式是什么:
runThis F1.hs
runThis F2.hs
...
runThis Fn.hs
我以为我可能会尝试使用--with-compiler但是
会失败cabal: The program ghc version >=6.4 is required but the version of runThis
(另一个选项看起来像调整Setup.lhs - 但理想情况下我想劫持构建过程并使用“runThis”而不是ghc)
谢谢!
答案 0 :(得分:1)
来自Duncan Coutts'email:
- 醇>
问题:如何添加预处理器?我试过了
main = defaultMainWithHooks simpleUserHooks{hookedPreProcessors=[("foo",transformation)]} transformation :: BuildInfo -> LocalBuildInfo -> PreProcessor
看起来不错。以下是如何完成它(例子来自于 用于PreProcess模块的Cabal haddock文档:
transformation _ _ =
PreProcessor {
platformIndependent = True,
runPreProcessor =
mkSimplePreProcessor $ \inFile outFile verbosity -> do
fail $ "transformation: " ++ inFile ++ " " ++ outFile
}
并且工作正常:
runghc Setup.hs build
Preprocessing library foo-1.0...
Setup.hs: transformation: Abc.foo dist/build/Abc.hs
但在什么情况下会调用此函数?到目前为止 我没有成功地让cabal调用这个函数。
它一直调用它并查找模块Abc
(即Abc.hs
或.lhs
),因为如果找不到它,它将通过列表检查
预处理器并寻找相应的文件,即Abc.foo
。