3

我们的 C++ 项目中,我们设法设置GitHub Actions使用ccache构建我们的源代码。

它在 Linux 上运行良好,感谢ccache,构建在不到 5 分钟的时间内成功。

不幸的是,当尝试在 macOS 上构建时,ccache似乎不起作用,给出:

cache directory                     /Users/runner/.ccache
primary config                      /Users/runner/.ccache/ccache.conf
secondary config      (readonly)    /usr/local/Cellar/ccache/3.7.11_1/etc/ccache.conf
stats updated                       Sun Aug 23 11:57:31 2020
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                          7175
cache hit rate                      0.00 %
cache file missing                     1
cleanups performed                  2976
files in cache                       165
cache size                         422.4 MB
max cache size                     500.0 MB

AzerothCore macOS ccache 问题

因此,macOS 构建大约需要 40 分钟才能完成。

因此,尽管我尝试以与那些macOS相同的方式设置构建ubuntu-*,但我未能让 ccache 正常工作,我不知道为什么。

如何使ccache工作macOS太?

4

1 回答 1

4

问题很可能是最大缓存大小太小。如果构建的结果(主要是目标文件)不适合最大缓存大小,则不会为下一个构建留下可用的结果,您只会得到缓存未命中。

执行的清理是构建前 2976 次和构建后 3353 次,因此执行了 377次自动清理。由于最大缓存大小为 500 MB,每次清理删除了大约 500 * (1 - 0.8) / 16 MB = 6.25 MB,因此所有清理一起删除了大约 377 * 6.25 MB ≈ 2356 MB 的数据。这应该大约是一个构建结果的大小。(0.8 是默认的“limit_multiple”,16 是指缓存中的子目录数。)

尝试大幅增加缓存大小限制。根据上面的计算,一个好的缓存大小至少是 5 GB。您还可以或替代地启用压缩 ( CCACHE_COMPRESS=1) 以在缓存中容纳更多结果。

于 2020-08-30T09:25:50.850 回答