为什么HsColour二进制文件的存在/不存在会重新编译QuickCheck库?

时间:2014-11-06 16:55:32

标签: haskell cabal cabal-install quickcheck

假设我没有安装HsColour程序,我安装了QuickCheck

$ cd /tmp/
$ cabal get QuickCheck
$ cd QuickCheck
$ cabal install
...
[ 1 of 15] Compiling Test.QuickCheck.Random 
...
[15 of 15] Compiling Test.QuickCheck
...
Installed QuickCheck-2.7.6

如果我再次安装QuickCheck,则不会重新编译,也就是说,我看不到行

[ 1 of 15] Compiling Test.QuickCheck.Random 
...
[15 of 15] Compiling Test.QuickCheck

但如果我安装HsColour当前版本(1.20.3)并再次安装QuickCheck,则会重新编译QuickCheck。

如果

,也会重新编译QuickCheck
  1. 我安装了HsColour,
  2. 我安装了QuickCheck,
  3. 我删除了HsColour二进制文件和
  4. 我安装了QuickCheck。
  5. 我使用GHC 7.8.3,Cabal 1.20.0.2和cabal-install 1.20.0.3以及Cabal和cabal-install的开发版本(使用https://github.com/haskell/cabal/commit/5ef7d84bb25cc5d53ad124978922f2c96bedb7d4)测试了这种行为。

1 个答案:

答案 0 :(得分:2)

我不是专家,但我相信cabal会配置他所知道并且能够找到的所有构建工具。构建时,cabal使用宏生成cabal_macros.h文件以测试构建工具版本。如果启用了CPP扩展程序,则该文件随处可见,并且在cabal_macros.h中的任何更改时都会重建所有内容。