據我所知,ccache通過捕獲先前的彙編和檢測何時再次完成相同的編譯來加速編譯。然而,makefile做同樣的事情。 那麼爲什麼我們需要ccache? 何時我們使用它? 謝謝!何時使用ccache?
3
A
回答
4
如果你運行
make clean; make
,你也許可以從 的ccache受益。由於許多原因,開發人員通常會乾淨地構建一個項目 ,並且這會拋棄以前編譯中的所有信息 。通過使用ccache,重新編譯快得多 。使用ccache的另一個原因是相同的緩存用於在不同目錄中構建 。如果您有幾個版本或分支 存儲在不同目錄中的軟件,構建目錄中的許多目標文件 可能會從緩存中取出,即使它們已被編譯爲其他版本或分支。
第三種情況是使用ccache加速由 服務器執行的清理構建,或者構建可定期檢查代碼爲 可構建的服務器場。
您還可以在共享編譯服務器上共享用戶之間的緩存,這對於非常有用的 。
1
從加快清潔的可疑益處
除了建立由虛線構建系統必要,並具有共享高速緩存的單純偶然益處,存在即使對分離的無瑕疵的mtime基於構建系統合法使用的ccache的:
當你在分支之間來回跳動(不是在談論單獨的目錄)或重新綁定,以至於最終碰到一大堆文件,或者如果你不走運,中央標題(如定義的)。 h)包含在所有的地方,你完美的基於mtime的構建系統會盡職地重建所有東西。如果你在過去的某段時間內建立了大部分相同的狀態,ccache將加速這一重建過程。
相關問題
- 1. 使用ccache和make
- 2. 在Docker內部構建時使用ccache
- 3. ccache的使用MinGW在Windows
- 4. 與ccache一起使用gcc
- 5. 如何在CMake中使用CCache?
- 6. 使用ccache使用自動工具
- 7. ccache爲什麼不經常使用gcc?
- 8. 與XCode 4一起使用ccache
- 9. 檢測編譯器是否使用ccache
- 10. 在jenkins管道中使用ccache
- 11. 在Windows上使用Qt Creator設置ccache
- 12. ccache中使用哪種緩存算法?
- 13. Ccache不能使用gcc -M標誌?
- 14. clang + icecc + ccache
- 15. 如何設置共享ccache
- 16. ccache BASEDIR(共享)配置
- 17. 是否有Visual Studio的Ccache?
- 18. ccache和絕對路徑
- 19. 在Ubuntu中設置ccache
- 20. CMake的想用ccache的,而不是GCC
- 21. 在CMake中使用編譯器前綴命令(distcc,ccache)
- 22. 如何在多種體系結構中使用ccache與gcc -march = native?
- 23. ccache basedir無法正常工作
- 24. Waf(WAFCACHE和/或ccache)的緩存選項
- 25. 何時使用==以及何時使用?
- 26. 何時使用.exe,何時不使用?
- 27. 何時使用R,何時使用SQL?
- 28. 具有相同代碼庫和多個工具鏈的ccache
- 29. ccache沒有刪除CMake文件而沒有命中緩存
- 30. ccache是否完全超越gcc的預編譯頭文件?
當我們運行make clean時,我們要清除所有的.o文件並重新編譯。所以,如果我們想將先前的編譯保存到緩存中,爲什麼不避免在之前運行make clean? – chicklet 2012-04-13 07:52:23
您可能剛剛更改了'Makefile'。或者你可能試圖在沒有'git'的情況下對一個bug進行分割:如果你解壓縮一箇舊版本的tarball,'make'會認爲二進制文件是最新的,因爲它們比源文件更新 - 但這將是錯誤的!在這兩種情況下,都需要「乾淨」。 'ccache'不會犯同樣的錯誤,因爲它使用散列而不是時間戳,並且非常小心只能在輸出相同的情況下進行。 – joeytwiddle 2014-08-05 19:45:43