是否可以在cabal项目中编译“仅一个文件”?

时间:2012-04-22 12:34:56

标签: haskell ghc cabal

在基于JVM的程序中,您可以将文件编译为.class文件,并且能够再次运行二进制文件,而无需编译所有文件。

是否可以在haskell中执行此操作?是否必须编译和链接项目中的所有文件?如果是,为什么?

如果没有二进制文件,你只是在安装一个库?

1 个答案:

答案 0 :(得分:4)

对于GHC,您可以更改和重新编译单个模块,而不必根据具体情况重新编译模块,前提是暴露的接口不会更改。 GHC的--make模式(默认为ghc-7。*)检查是否需要重新编译,并仅重新编译那些无法确定不需要的模块。

如果您在更改一个模块后有一个cabal包并且cabal build,您可以从编译器输出中看到它不会重新编译包中的所有模块,只有更改的模块和[可能]取决于它的那些。

如果您构建可执行文件,那当然必须重新链接,但许多旧的目标文件可以重复使用。

如果您构建库,则必须重建库存档,但可以重用许多旧的目标文件。