簡體   English   中英

更改具有較大差異的分支后出現 ccache 問題

[英]Problem with ccache after changing branches with larger diff

我正在編譯啟用 ccache 的應用程序。 一切正常,直到我將我的 repo 的分支更改為具有更大差異的分支。

流動:

  • 第一次編譯分支X(ccache緩存一切)——編譯時間約3min
  • 再次編譯分支 X(使用上一步創建的緩存)編譯時間大約 9 sek
  • 只需 1 sek 更改為分支 Y
  • 改回分支 X
  • 再次編譯分支 X(ccache 不再命中,它再次緩存文件) - 編譯時間大約 3 分鍾

如果我更改為差異小得多的其他分支,ccache 工作正常。

我不知道為什么它在上述情況下不起作用。

以下是我正在使用的選項:

(default) absolute_paths_in_stderr = false
(default) base_dir =
(environment) cache_dir = /ccache
(default) compiler =
(default) compiler_check = mtime
(environment) compiler_type = clang
(default) compression = true
(default) compression_level = 0
(default) cpp_extension =
(environment) debug = true
(environment) debug_dir = /ccache/debug
(environment) depend_mode = true
(environment) direct_mode = true
(default) disable = false
(default) extra_files_to_hash =
(environment) file_clone = true
(default) hard_link = false
(default) hash_dir = true
(default) ignore_headers_in_manifest =
(default) ignore_options =
(environment) inode_cache = true
(default) keep_comments_cpp = false
(default) limit_multiple = 0.8
(environment) log_file = /ccache/ccache-log
(default) max_files = 0
(/ccache/config) max_size = 20.0G
(default) namespace =
(default) path =
(default) pch_external_checksum = false
(default) prefix_command =
(default) prefix_command_cpp =
(default) read_only = false
(default) read_only_direct = false
(default) recache = false
(default) reshare = false
(environment) run_second_cpp = true
(default) secondary_storage =
(environment) sloppiness = clang_index_store, include_file_ctime, include_file_mtime, ivfsoverlay, locale, modules, pch_defines, system_headers, time_macros
(default) stats = true
(default) stats_log =
(default) temporary_dir = /ccache/tmp
(default) umask =

有人知道我在做什么錯嗎?

PS。 可能是因為我的.hpp文件時間戳在分支切換期間發生了變化,但是 ccache 對這種時間戳變化沒有抵抗力嗎? 很明顯,在沒有 ccache 的編譯過程中,經過這樣的更改程序將從頭開始編譯,但我認為 ccache 應該對此有所幫助。 我錯了嗎?

我發現了問題所在。 我正在使用預編譯頭文件,並將它們編譯為.gch。 當該pch中包含的某些header的時間戳發生變化時,會出現問題,因為新生成的.gch與前一個不同,然后必須重新編譯使用該pch的所有.cpp文件,因為ccache沒有找到它們的命中.

在這種情況下,我的解決方案是使用 pch 文件作為前綴頭文件,並且只包含它們而不是將它們用作預編譯頭文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM