根据其手册,ccache
确定它之前是否编译过以下对象:
- 运行编译器的预处理器输出
-E
- 命令行选项
- 真正的编译器大小和修改时间
- 编译器生成的任何标准错误输出
如果某些 PHB 仍然担心您因为ccache
. 或者您可以在构建最终产品之前清除缓存。
更新:我不知道将产品ccache
用作其构建系统的组成部分,但集成到任何可以设置编译器路径的环境中真的很简单。即autoconf
:
CC="ccache gcc" ./configure
在查看作者的名字之后,我会说这是一个非常安全的假设,它已在 Samba 团队中被广泛使用。
更新以回应 Ringding 关于使用的评论stderr
: 从ccache
的角度来看,一个有趣的信息是 C 编译器的版本和配置字符串。gcc
将其输出到标准错误文件:
$ gcc -v 2>err
$ cat err
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.3.4-2' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.3.4 (Debian 4.3.4-2)
我敢打赌,ccache
使用这个或类似的输出。但是,嘿,你总是可以看看它的源代码。:-)