问题标签 [ccache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
45 浏览

android - ccache会影响后续android构建中的错误吗

我真的不明白(我已经阅读但我还不确定)ccache 是如何工作的,所以我的问题可能很愚蠢,但我想知道在调试阶段使用它是否可能是一个问题而不是帮助。我会更好地解释:假设从一个干净的 ccache 开始,我构建了一个 android ROM,构建顺利并且 ccache 被填充。然后我启动 ROM,我注意到有些东西没有按预期工作,我不知道,为了这个例子,假设 WiFi 没有连接。我回到我的代码并修改了一些应该修复它的东西,但显然我必须对其进行测试,所以我再次构建(使用 ccache,所以构建不需要太多)。

我的问题是,在我试图解决问题的后续构建中使用 ccache 是否可能会使我的修改毫无价值,因此最好进行完全干净的构建,或者完全不影响结果?

0 投票
2 回答
407 浏览

c++ - ccache 如何提高构建速度?

我正在使用 cmake 设置我的项目,当我更改项目中的文件时,我发现我的 cmake 知道只重新编译更改的文件,然后将所有内容重新链接在一起以获得最终的可执行文件/lib。

然后我通读了有关 ccache 的文档,我不明白的是:ccache 的方法(使用哈希值检查文件是否已更改并需要重新编译)与 cmake 使用的默认方法(或那里)有什么区别可能是其他东西,而不是 cmake 检查文件更新,但你知道我的意思)。可能 PCH 部分有所不同,但是 cmake 3.18 现在带有 PCH 支持,那么,这是否意味着 ccache 在 PCH 部分提供的好处不再是唯一的?

0 投票
1 回答
626 浏览

c++ - GitHub Actions CI 中的 Ccache 命中率 0.00 %

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

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

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

AzerothCore macOS ccache 问题

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

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

如何使ccache工作macOS太?

0 投票
1 回答
56 浏览

c - 如果编译器绝对路径在makefile中被硬编码,我应该如何使用ccache?

修改构建我们的代码的复杂的 makefile 嵌套对我来说不是一个选项,并且在不同的地方它们构建了非常特定的编译器的绝对路径,例如/home/arm2gcc/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi-gcc

这使得很难将 ccache 用作前缀或将其放在路径中的首位。

所以我想知道将我个人机器上的编译器安装移动到例如/home/arm2gcc-real并将假脚本放入/home/arm2gcc重定向到真正的编译器。

谁能建议如何做到这一点?或者,还有更好的方法?

0 投票
0 回答
262 浏览

c++ - Qt、QML 和 C++:提高编译速度的技巧

我是一名 Qt 开发人员。我有一个非常快的 Ryzen 3900X,我正在寻找加快日常工作的技巧(在 linux 中构建速度更快)

这是一个示例项目:

  • 完全重建 24 核:经过时间:00:38。
  • 修改 main.cpp:经过时间:00:02。
  • 修改 main.qml:经过时间:00:05。

现在我正在使用这些选项显着提高编译速度(在项目 .pro 中):

(您可以使用 CONFIG+=qtquickcompiler 或始终在发行版中构建。)

我得到:

  • 完全重建 24 核:经过时间:00:05。
  • 修改 main.cpp:经过时间:00:01。
  • 修改 main.qml:经过时间:00:01。

现在它真的非常快,我可以在 1 秒内修改 QML 文件、构建和执行。

更多提高编译速度的想法?

在 windows + VS2019 中有更好的编译时间的想法吗?Qmake 构建系统在 win32 中似乎很慢

对macos有什么想法吗?(我没有在mac os上尝试过ccache和gold linker)

0 投票
1 回答
195 浏览

cmake - GitHub Actions CI 中缓存的命中率 0.00 %

我有一个虚拟 C++ 项目,我有以下 github 操作配置:

我正在ccache通过添加/删除库进行测试CMakeLists.txt,但每次ccache命中率为 0%

从中恢复缓存的上一个作业有一个输出:

我需要做任何特定的事情来保存特定于 cmake 的缓存吗?

0 投票
1 回答
121 浏览

jenkins - 詹金斯 + Kubernetes + ccache

我们正在考虑将 Jenkins 迁移到 Kubernetes (GKE) 并使用 Jenkins Kubernetes 插件在 pod 中运行作业。但是,我们的构建基础设施使用 ccache 来优化构建速度,并且我们将 ccache 文件保存在 jenkins 代理上(每个构建都会读取和写入每个代理上的本地 ccache 文件夹)。

据我了解,k8s 中的 Jenkins 代理 pod 是短暂的,这意味着它们仅供一次性使用。我正在努力了解 ccache 是如何工作的。这是我的想法:

  • 在 pod 模板中使用 hostpath 卷让代理 pod 在节点上挂载路径。恐怕这行不通,因为基于 GKE 文档 hostpath 不允许 ReadWriteMany,这意味着多个 pod 将无法同时写入 ccache 挂载。
  • 使用基于 NFS 的卷 - 我知道它不会很好地工作,因为它会很慢并且会出现锁定问题。
  • 以某种方式配置带有“podRetention”和“idleMinutes”选项的 pod 模板,以便重新使用 Pod。我认为这是可行的,但 IMO 这违背了使用 Kubernetes 的目的。
  • 使用 StateFull Jenkins 代理——我再次认为这是可行的,但违背了使用 Kubernetes 的目的。

我发现https://issues.jenkins.io/browse/JENKINS-42422可能是相关的,但我认为没有解决方案。

关于如何实施的任何其他想法?不能使用 ccache 对我们来说是一个交易破坏者,因为与静态代理相比,它会使构建周转时间变得更糟。

0 投票
0 回答
19 浏览

ccache - 如何使 ccache 排除检查特定文件

我使用cmake构建了一个c ++项目,但是当我将git分支切换回来时,ccache没有命中。我如何避免重新编译,因为当前代码与以前完全相同。

0 投票
1 回答
67 浏览

cmake - CMake install very slow, but much faster with ccache

So I found that my build is very slow with CMake when I do install. One package in particular is taking ~1:20 minutes to build and ~1:40 to install.

It's not installing terrabytes of data, and installation is just moving some files around, so I was wondering why it's so slow.

Now I found that if I build with ccache, I got faster build times even with a cold cache.

Now I looked at the install times, and the package went down to ~40 seconds install time. Still a lot considering CMake is only copying ~50MB, but considerably faster than before.

How can this be? Is there some kind of contention on files that is resolved with ccache?

0 投票
0 回答
60 浏览

c++ - 为什么 ccache 编译器调用失败?

我在 cmake 上使用启动器进行了以下 clang 调用ccache

clang="clang.sh"将所有内容转发到的变量/usr/local/opt/llvm@12/bin/clang++

这可以工作并编译。但是,当我在上面的调用中替换clang=/usr/local/opt/llvm@12/bin/clang++时,我得到一个非常奇怪的编译器错误:

这是为什么??这没有任何意义。