可以在Setup.hs
中重写cabal的简单构建系统的默认构建钩子,其形式如下:
main = defaultMainWithHooks simpleUserHooks { buildHook = myBuildHook }
,
myBuildHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()
所以我们得到了PackageDescription
和LocalBuildInfo
,但是如果我们看一下后者,我们可以看到它包含了记录名称为localPkgDescr
的前者。
鉴于此,我请求:
- 我们有两个
PackageDescription
的原因吗? - 如果我们没有覆盖
buildHook
,哪个PackageDescription
会被使用?
看起来第一个PackageDescription
基本上代表了原始的<pkg>.cabal
文件,而包装的PackageDescription
包含了"resolved"的包描述,其中的标志被移除,并且所有的条件都被解决了。
我无法更仔细地检查这两个结构同时使用的代码段,所以我不能100%确定这种行为