假设我没有安装 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 也会重新编译,如果
我使用 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)测试了这种行为。
最佳答案
我不是专家,但我相信 cabal 配置了他知道并能够找到的所有构建工具。 build 时, cabal 生成 cabal_macros.h
带有宏的文件以测试构建工具版本。如果 CPP
扩展名被启用,然后文件被包含在任何地方,并且所有内容都会根据 cabal_macros.h
中的任何更改重新构建.
关于haskell - 为什么 HsColour 二进制文件的存在/不存在会强制重新编译 QuickCheck 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785036/