Nei*_*ell 7 haskell shake-build-system
我有一个Haskell程序,我想用GHC编译,由Shake构建系统编排.我应该执行哪些命令,以及在什么情况下应该重新运行?
有两种方法可以进行编译,还有两种方法可以获取依赖项.你需要从每一组中挑选一个(所有4种组合都有意义),以提出一种组合方法.
汇编
你可以:
ghc -c依次调用每个文件,具体取决于.hs文件及其.hi传递的任何文件,生成a .hi和.o文件.最后,ghc -o根据所有.o文件调用.对于实际代码,请参阅此示例.ghc --make一次,具体取决于所有.hs文件.对于实际代码,请参阅此示例.优点ghc --make是它比多次调用更快,ghc -c因为GHC只能加载每个.hi文件一次,而不是每个命令加载一次.通常加速是3倍.缺点是并行性是很难(你可以使用-j到ghc --make,但仍然摇假定每个动作消耗一个CPU),以及两个ghc --make汇编不能在同一时间都运行,如果他们在任何依赖重叠.
依赖
你可以:
import语句(也许是#include语句),或者使用诸如的库haskell-src-exts.对于具有非常近似import解析器的实际代码,请参阅此示例.ghc -M来检测依赖关系,可以使用Shake辅助函数解析它们parseMakefile.对于实际代码,请参阅此示例.解析Haskell文件的优点是可以生成Haskell文件,并且可以更快.使用的优点ghc -M是更容易支持所有GHC功能.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |