问题标签 [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 回答
1140 浏览

docker - 在 Docker 云上的自动构建中使用 ccache

我正在使用 Docker 云上的自动构建来编译 C++ 应用程序并在映像中提供它。编译相当长(范围 2-3 小时)并且在 github 上的提交很频繁(每天约 10 到 30 次)。

有没有办法以某种方式保留构建缓存(使用ccache)?

据我了解,docker 缓存是无用的,因为由于源代码更改,将不会使用生成 ccache 的编译层。或者我们可以调整以将一些数据带回第一层吗?

还有其他解决方案吗?把它推到某个地方?


这是 Dockerfile:

0 投票
1 回答
1700 浏览

jenkins - 将 ccache 与 jenkins 管道一起使用

我无法从ccache我的詹金斯管道构建中获得一致的好处。我正在设置CCACHE_BASEDIR为我当前构建目录的父目录(这类似于/opt/jenkins/workspace)。鉴于这个 basedir,我希望所有共享这个共同父级的 PR/分支构建能够在缓存中找到命中,但可惜他们没有。我确实看到给定目录中后续构建的缓存命中(例如,如果我手动重建特定 PR),这意味着它CCACHE_BASEDIR不像我预期的那样工作。

为了进一步诊断,我尝试了设置CCACHE_LOGFILE,虽然该文件是由构建生成的,但它实际上是空的(它只包含两行指示 ccache 的版本)。

任何人都可以提出具体的设置或技术,以从ccache詹金斯管道或其他尝试诊断问题的方法中获得最大收益吗?什么可能导致空的 ccache 日志文件?

我正在运行ccache3.3.4。

0 投票
1 回答
909 浏览

ccache - ccache basedir 没有按预期工作

我正在尝试使 ccache 使用从不同同级目录构建的相同源代码。我已成功设置CCACHE_BASEDIR为这两个兄弟姐妹的父目录。如果我进行构建bld1然后切换到bld2并构建该副本(同样,这些是相同的来源),我不会得到缓存命中。

我现在正在查看来自 setting 的日志输出CCACHE_LOGFILE。不幸的是,日志并没有告诉我计算它查找的哈希值是什么因素/数据,我只看到很多“没有这样的清单文件”消息(似乎是直接查找)。

是否有任何其他选项可以用来调试 ccache 的问题,以找出为什么它不能将这两个源树识别为相同的?

为了清楚起见,如果我在给定目录中重复构建,我确实会在缓存中获得很多命中 - 很明显 ccache 正在使用不变的构建路径,它似乎无法跨目录正常工作。

0 投票
0 回答
1033 浏览

gcc - ccache 和预编译头文件

我正在使用预编译头文件和 CCACHE 来加快我的编译速度(GCC 5.3.1)

这两者是分开工作的(我对预编译有 x2 的加速,在第二次运行时对 CCACHE 有 x25 的加速),但我很难让它们一起工作(在查看 CCACHE 统计信息时我只有缓存未命中)。

您是否看到 ccache 无法使用预编译头文件的任何原因?

这是CCACHE的统计数据

这是 CCACHE 日志的示例(第二次运行)

0 投票
1 回答
599 浏览

opencv - 使用 ccache 和 CUDA 构建 OpenCV 的问题

尝试使用 CUDA 支持构建 OpenCV 3.3.1,使用ccache

  • Ubuntu 16.04 LTS
  • OpenCV 3.3.1
  • CUDA 8.0
  • 高速缓存 3.2.4

图片

生成文件失败.cu,给出错误:

/usr/bin/ccache: 无效选项 -- 'E'

用法:

ccache [选项] ...

我已经分别添加了/usr/lib/ccachetoPATH和输出which ccand 。手动为in目录添加了符号链接,但现在 OpenCV CMakeLists.txt 找不到 CUDA。which c++/usr/lib/ccache/cc/usr/lib/ccache/c++nvcc/usr/lib/ccache

图片

但有趣的是,我可以使用这个CMake 文件构建这个示例CUDA 代码,没有任何问题。

我已经在网上搜索并阅读了 SO 和其他论坛上的大多数帖子,但没有成功。我以前版本的 OpenCV 也遇到过这个问题,但ccache作为解决方案总是禁用。

有人可以解释这个错误背后的原因吗?

0 投票
0 回答
1179 浏览

macos - sudo rm 在 Mac 上不起作用

我正在使用 ccache,它卡在阻止所有使用它的构建的状态。我尝试执行 ccache --clear 但命令只是挂起,所以我继续并决定手动删除 .ccache 文件夹,但我得到“权限被拒绝”。

其中一个文件的 stat 输出:

16777221 8590811525 -rwxr-xr-x 1 user7 员工 0 0 “2018 年 2 月 2 日 12:29:36”“2018 年 2 月 2 日 12:29:36”“2018 年 2 月 2 日 18:51:03”“2 月 2 日 12:29: 36 2018" 4194304 0 0

然后我尝试了:

sudo chflags -R nouchg ./*

sudo chflags -R noschg ./*

然后我尝试禁用系统完整性,仍然没有运气。当我做

须藤 rm -fR ./*

我得到“权限被拒绝”

0 投票
2 回答
3219 浏览

android - 编译 AOSP 8.1 时,Ccache 不会增长超过 1GB,最大大小 = 30GB

我正在构建服务器上编译 AOSP 8.1.0 源代码树。我用 Ubuntu 16.04 所需的所有软件包制作了一个 docker 映像。我在启动 docker 映像时挂载了源代码树、ANDROID_OUT 和 ccache 目录。这三个目录在docker中的路径是一样的:

来源:/home/builder/android_source/AOSP_8.1/

输出:/home/builder/android_out/AOSP_8.1/

ccache: /home/builder/ccache/

问题是我不明白 ccache 的行为方式。如果我watch ccache -s在编译 android 时正在运行,我会看到如下内容:

这些值之后的几秒钟可以增加或减少。我已将最大缓存大小设置为 30GB,ccache -s告诉我这个正确的最大大小,但缓存大小永远不会超过 1Gb。我在 5 次构建后看到的最大大小约为 983MB。

我试过什么?

1)chown -R builder:builder ~/ccache/

2)ccache -M 30G在码头工人。最大大小设置为 30GB,行为保持不变。

3) ccache -C- 缓存清除,没有什么好转的。

我的 ccache 有什么问题?

0 投票
0 回答
300 浏览

qt5 - 如何使用子项目全局覆盖 qmake 中的编译器?

我可以以某种方式覆盖QMAKE_CXX.pro 文件的所有子项目的全局定义吗?

将此语句放在顶级项目文件中不会更改子项目中的编译器。仅当我将其复制到每个 .pro 文件时它才有效。

我想QMAKE_CXX = ccache $$QMAKE_CXX使用命令行参数定义qmake

0 投票
1 回答
2217 浏览

clang++ - 将 ccache 与 clang 5 一起使用会导致与仅 clang5 不同的结果

因此,使用这段人为的代码 - 使用 clang 编译工作得很好,但是当使用 ccache 时会出现额外的警告/错误 - 我认为 ccache 应该透明地传递这些。这是来自 epel repo 的 CentOS 6 上的 ccache 3.1.6 - 升级不是一个选项,因为这是生产环境。

因此,未使用包含路径的示例 1 没有给出错误:

但是使用 ccache 我得到:

没有额外包含的示例 2 可以正常工作:

和 ccache

为什么使用 ccache 会改变结果?

0 投票
2 回答
1513 浏览

c++ - Bazel 使用 ccache 构建 C++ 示例失败

我一直在按照 OSX here的说明进行操作。我已经安装了 bazel,克隆了示例并尝试使用bazel build //main:hello-world. 但在这里它出错了。

好像我安装的 ccache 有问题。运行相同的命令后--verbose_failures

我发现沙盒有问题。添加--sandbox_debug打印:

沙盒文件的内容sandbox.sb是:

它显然缺少写入/Users/myuser/.ccache目录的权限。我试过禁用 ccacheexport CCACHE_DISABLE=1但没有任何改变。如何在不删除 ccache 的情况下修复它?