根據其說明書,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
使用這種或類似的輸出。但是,嘿,你可以隨時查看它的源代碼。 :-)
它不能根據編譯器的stderr輸出做出決定,因爲它必須先調用編譯器。但其他3個是正確的,IIRC。 – Ringding 2009-09-15 07:41:59
夥計們,你知道我的問題的第二項答案嗎? @hillu +1對於「安全」建議。答案的一個很好的部分是,如果事先清理緩存,開發人員也可以執行「安全」構建 – dimba 2009-09-15 08:54:17