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

标签 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 也会重新编译,如果
  • 我安装了 HsColour,
  • 我安装了 QuickCheck,
  • 我删除了 HsColour 二进制文件和
  • 我安装了快速检查。

  • 我使用 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/

    相关文章:

    haskell - 什么时候使用无意义的风格?

    windows - 构建数据默认包的奇怪错误

    Haskell 模块导入自身

    haskell - Stack/Docker/IHaskell 奇怪的行为

    haskell - 为什么我无法安装 template-haskell-2.17.0.0?

    performance - 如何在 Haskell 中编写高效的动态规划算法?

    parsing - 使用 Haskell 解析引号

    linux - 使用 cabal-install 安装 netcore 时出错

    arrays - Haskell 中的大小索引可变数组

    haskell - Yesod-平台安装因 Alex 包而失败