问题标签 [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.
docker - 在 Docker 云上的自动构建中使用 ccache
我正在使用 Docker 云上的自动构建来编译 C++ 应用程序并在映像中提供它。编译相当长(范围 2-3 小时)并且在 github 上的提交很频繁(每天约 10 到 30 次)。
有没有办法以某种方式保留构建缓存(使用ccache)?
据我了解,docker 缓存是无用的,因为由于源代码更改,将不会使用生成 ccache 的编译层。或者我们可以调整以将一些数据带回第一层吗?
还有其他解决方案吗?把它推到某个地方?
这是 Dockerfile:
jenkins - 将 ccache 与 jenkins 管道一起使用
我无法从ccache
我的詹金斯管道构建中获得一致的好处。我正在设置CCACHE_BASEDIR
为我当前构建目录的父目录(这类似于/opt/jenkins/workspace
)。鉴于这个 basedir,我希望所有共享这个共同父级的 PR/分支构建能够在缓存中找到命中,但可惜他们没有。我确实看到给定目录中后续构建的缓存命中(例如,如果我手动重建特定 PR),这意味着它CCACHE_BASEDIR
不像我预期的那样工作。
为了进一步诊断,我尝试了设置CCACHE_LOGFILE
,虽然该文件是由构建生成的,但它实际上是空的(它只包含两行指示 ccache 的版本)。
任何人都可以提出具体的设置或技术,以从ccache
詹金斯管道或其他尝试诊断问题的方法中获得最大收益吗?什么可能导致空的 ccache 日志文件?
我正在运行ccache
3.3.4。
ccache - ccache basedir 没有按预期工作
我正在尝试使 ccache 使用从不同同级目录构建的相同源代码。我已成功设置CCACHE_BASEDIR
为这两个兄弟姐妹的父目录。如果我进行构建bld1
然后切换到bld2
并构建该副本(同样,这些是相同的来源),我不会得到缓存命中。
我现在正在查看来自 setting 的日志输出CCACHE_LOGFILE
。不幸的是,日志并没有告诉我计算它查找的哈希值是什么因素/数据,我只看到很多“没有这样的清单文件”消息(似乎是直接查找)。
是否有任何其他选项可以用来调试 ccache 的问题,以找出为什么它不能将这两个源树识别为相同的?
为了清楚起见,如果我在给定目录中重复构建,我确实会在缓存中获得很多命中 - 很明显 ccache 正在使用不变的构建路径,它似乎无法跨目录正常工作。
gcc - ccache 和预编译头文件
我正在使用预编译头文件和 CCACHE 来加快我的编译速度(GCC 5.3.1)
这两者是分开工作的(我对预编译有 x2 的加速,在第二次运行时对 CCACHE 有 x25 的加速),但我很难让它们一起工作(在查看 CCACHE 统计信息时我只有缓存未命中)。
您是否看到 ccache 无法使用预编译头文件的任何原因?
这是CCACHE的统计数据
这是 CCACHE 日志的示例(第二次运行)
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/ccache
toPATH
和输出which cc
and 。手动为in目录添加了符号链接,但现在 OpenCV CMakeLists.txt 找不到 CUDA。which c++
/usr/lib/ccache/cc
/usr/lib/ccache/c++
nvcc
/usr/lib/ccache
但有趣的是,我可以使用这个CMake 文件构建这个示例CUDA 代码,没有任何问题。
我已经在网上搜索并阅读了 SO 和其他论坛上的大多数帖子,但没有成功。我以前版本的 OpenCV 也遇到过这个问题,但ccache
作为解决方案总是禁用。
有人可以解释这个错误背后的原因吗?
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 ./*
我得到“权限被拒绝”
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 有什么问题?
qt5 - 如何使用子项目全局覆盖 qmake 中的编译器?
我可以以某种方式覆盖QMAKE_CXX
.pro 文件的所有子项目的全局定义吗?
将此语句放在顶级项目文件中不会更改子项目中的编译器。仅当我将其复制到每个 .pro 文件时它才有效。
我想QMAKE_CXX = ccache $$QMAKE_CXX
使用命令行参数定义qmake
clang++ - 将 ccache 与 clang 5 一起使用会导致与仅 clang5 不同的结果
因此,使用这段人为的代码 - 使用 clang 编译工作得很好,但是当使用 ccache 时会出现额外的警告/错误 - 我认为 ccache 应该透明地传递这些。这是来自 epel repo 的 CentOS 6 上的 ccache 3.1.6 - 升级不是一个选项,因为这是生产环境。
因此,未使用包含路径的示例 1 没有给出错误:
但是使用 ccache 我得到:
没有额外包含的示例 2 可以正常工作:
和 ccache
为什么使用 ccache 会改变结果?
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 的情况下修复它?