问题标签 [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.
linux - 内核构建缓存/不确定性
我运行一个 CI 服务器,用于构建自定义 linux 内核。CI 服务器并不强大,每次构建的时间限制为 3 小时。为了在这个限制内工作,我想到了使用 ccache 缓存内核构建。我希望我可以在每个次要版本发布时创建一个缓存,并将其重新用于补丁版本,例如我有一个为 4.18 制作的缓存,我想将它用于所有 4.18.x 内核。
删除构建时间戳后,这对于我正在构建的确切内核版本非常有用。对于上面提到的 4.18 内核,在 CI 上构建它会提供以下统计信息:
100% 的缓存命中率和一个小时来完成构建,出色的统计数据和预期的一样。
不幸的是,当我尝试构建 4.18.1 时,我得到
这是 1.30% 的命中率,而构建时间反映了这种糟糕的性能。即仅从单个补丁版本更改。
我本来预计缓存性能会随着时间的推移而下降,但不会降到这个程度,所以我唯一的想法是,除了简单的时间戳之外,还有更多的不确定性。例如,大多数/所有源文件是否包含完整的内核版本字符串?我的理解是,这样的事情会完全破坏缓存。有没有办法让缓存按我的意愿工作,还是不可能?
bazel - 如何让 Bazel、ccache 和沙盒协同工作(ccache 只读文件系统)
我正在尝试使用通过 copr 安装的 Bazel 0.16.1 和通过 DNF 安装的 ccache 3.4.2 在 Fedora 28 上构建 C++ 应用程序。我正在使用默认的 cc_binary 和 cc_library 规则。当我运行 bazel build 命令时,ccache 错误如下:
我可以看到当我构建时--verbose_failures --sandbox_debug
我们没有挂载 ccache tmp 目录 r/w。
那么,如何让 bazel 以 r/w 方式挂载我的 ccache 目录,或者如何通过 bazel 告诉 ccache 我的工作区的正确缓存目录所在的位置?
当我在 Ubuntu 18.04 上运行相同的命令时,它会成功,所以这让我相信 ccache 以某种方式得到支持。
看起来我的问题的一部分是ccache将其编译器驱动程序安装为gcc。例如which gcc -> /usr/lib64/ccache/gcc
。必须显式调用 Ubuntu ccache 上的位置,并且默认工具链不会调用它。
c++ - 使用 Unity Builds 加速 C++ 构建并减少头文件依赖
我刚刚将一个 Objective-C(++) 项目转换为纯 C++。在移动越来越多的代码时,我注意到构建时间增加了很多。
我的项目目前分为几个框架/dylibs 和一个使用这些框架的主项目。
我做了一些研究,发现基本上推荐了三件事来减少构建时间:
- 减少头文件依赖
- 使用统一构建
- 使用像 ccache 这样的工具,不要一直重做不需要的工作
我实现了 ccache,它工作得很好,我能够大大减少构建时间。
我有点不确定是否要减少头文件依赖和统一构建。我读到统一构建的一大缺点是,如果您对一个有意义的源文件进行更改,则需要重新编译所有内容。然而,这对框架来说不是问题,因为如果它们发生变化,无论如何都需要重新编译它们。
我读到使用“伞形头文件”(例如“MyFramework.h”)是一种不好的做法,它将包含给定框架的所有公共头文件,尽管您可能只需要其中的几个。
Cocoa 在任何地方都使用伞头文件,这当然比为每个源文件挑选所需的确切标题要容易得多。但是,当使用统一构建时,每个框架只有一个标头,对吗?
选择单个标题是否仍然有意义,或者在统一构建中使用“伞形标题”是否可以?
在这里摸摸摸摸,不想花时间实施最终无济于事的技术。
谢谢你的帮助!
c++ - ccache 忽略 CCACHE_DIR
我有两个具有相同文件的相同项目
我ccache
用来加速跨目录边界的编译,所以我定义了CCACHE_BASEDIR
我使用以下命令编译文件:
为什么 bar/a.cpp 的目标文件没有从缓存中提取?
android - 我可以恢复分配给 ccache(编译器缓存)的内存吗?
c++ - 是否可以使用 ccache 或类似工具加速 clang-tidy?
自从ccache
在我们的 CI 服务器上使用以来,我们发现构建时间方面的瓶颈现在是我们的静态分析通道,它使用clang-tidy
. 有谁知道以clang-tidy
类似于ccache
使用常规编译器的方式加速的方法?
caching - 在 GitLab CI 中没有命中 ccache
ccache 在 GitLab CI 中的缓存命中率为零,即使源不更改并且缓存保持不变。
此外,每次构建运行时缓存的大小都会增加,这意味着它会一遍又一遍地重建。
c++ - 提高 ccache 命中率
我正在使用 distcc 和 ccache 来加速我的项目的编译。
我注意到当我从不同的目录构建相同的代码时,我没有得到任何点击。我在网上查了https://github.com/ccache/ccache/issues/212发现我需要设置hash_dir flag = false
. 我已经有了变量CCACHE_NOHASHDIR=true
。我错过了什么吗?我需要设置/取消设置任何其他变量吗?
c++ - 将 clcache 与 Incredibuild 结合使用
我正在尝试通过将 ClCache 与 Incredibuild 一起使用来加快编译速度。
我通过用 ClCache.exe 替换 cl.exe 来配置 ClCache。
但是,在使用 incredibuild 时,它会尝试在帮助程序上执行任务,但它从不使用其输出。
我看到 CL.exe(重命名的 clcached.exe)通过助手上的 procesexplorer 调用 Python.exe 调用 CL_original.exe(原始 cl.exe)。
- 是否可以查看在 Incredibuild-helper 上执行的 cl 命令的输出?(这将允许我进一步调试情况)
- 有没有人成功配置 Clcache 与 incredibuild 一起工作?
PS:我也尝试使用 /MsBuild 和 /p:CLToolExe 指向 ClCache,也没有成功。
c++ - 如何在 Windows 上设置和使用 ccache(带有 cygwin)?
我无法使用 Cygwin 在 Windows 上设置 Ccache。
我想做什么?我想在 Windows PC 上安装 CCache,这样我就可以用它来编译 C 和 C++ 项目。
我对 C/C++ 和整个 GCC/G++ 编译器几乎一无所知。
我的方法的主要来源:
- https://wiki.archlinux.org/index.php/ccache
- http://charette.no-ip.com:81/programming/2016-02-07_CCache/index.html
- https ://askubuntu.com/questions/470545/how-do-i-set-up-ccache
Ccache 仅适用于 Unix 系统,因此为了获得 bash 命令,我为 windows 安装了 Cygwin。
我还在我的 C:/ 驱动器上安装了 MinGW32。在 Cygwin 中,我安装了以下软件包:(查看:已选择)
安装后我可以在 Cygwin 中使用“ccache -V”,它告诉我我得到了 3.1.9 版本
根据我正在关注的教程,我应该得到:
如果我输入命令:“which gcc g++”。
但我默认得到以下内容:
所以我想改变路径。但是 cygwin 中的 ccache 结构似乎与在 unix 机器上使用 sudo 安装它时的结构不同。
我在 ccache 中或在 cygwin 中找不到任何 gcc 或 g++ 编译器。
但是 ccache 也不在 cygwin 的 usr/lib/ccache 中。如果我输入“which ccache”,它会给我路径 usr/bin/ccache。
我没有想法,而且我似乎对 C 编译器没有足够的了解,无法了解要做什么/在哪里搜索。