问题标签 [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 投票
2 回答
2464 浏览

gcc - 使用 gcc 和 ccache

我正在考虑在团队范围内使用 ccache 和 gcc 编译代码(同一台机器上的所有开发人员都将使用相同的 ccache 缓存)。

由于我们谈论的是商业产品,因此编译的“正确性”是重中之重。

问题来了:

  1. 使用 ccache 进行编译是否安全/可重现?是否存在一些 ccache 误认为缓存命中的异常情况。

    如果我签出源代码并编译它,我希望每次重复新的编译过程时都会收到相同的产品(完全相同的库/二进制文件)。这对于商业产品来说是必须的。

  2. 是否有开源/商业产品使用 ccache 作为其构建系统的组成部分?这将更容易说服我的同事使用 ccache。

谢谢

0 投票
9 回答
52263 浏览

c++ - 如何在 CMake 中使用 CCache?

我想做以下事情:如果 CCache 存在于 PATH 中,则使用“ccache g++”进行编译,否则使用 g++。我尝试编写一个小的 my-cmake 脚本,其中包含

但它似乎不起作用(运行 make 仍然不使用 ccache;我使用 CMAKE_VERBOSE_MAKEFILE 检查了这一点)。

更新:

根据此链接,我尝试将脚本更改为

但是 cmake 会抱怨使用编译器 ccache 的测试失败(这是可以预料的)。

0 投票
5 回答
16013 浏览

visual-studio - Visual Studio 是否有“ccache”?

我知道它scons实现了 的功能ccache,但我被另一个构建系统困住了。

我也知道gocacheSourceForge 上有一个项目旨在ccache为其他编译器实现类似的功能,但它似乎并不完整。

0 投票
7 回答
11390 浏览

gcc - g++、colorgcc 和 ccache

试图结合 ccache 和 colorgcc。以下链接文字

  • 我的 g++ 是到 colorgcc 的软链接
  • ~/.colorgccrc 包含行:“g++: ccache /usr/bin/g++”

运行 g++ --version 时收到:

任何想法如何解决它?

0 投票
2 回答
4105 浏览

gcc - 使用不同目录中已编译文件的绝对路径时如何进行 ccache 缓存编译?

我使用 CMake 创建生成文件。CMake 创建包含绝对路径的 GCC 行。

为了加快编译速度,我使用了 ccache。

从不同位置构建相同的代码(例如,几个开发人员编译相同的代码,每个代码都在其主目录下)会导致 ccache 缓存未命中。

0 投票
4 回答
18205 浏览

linux - 如何有选择地使用ccache?

我必须编译用 C++ 编写的应用程序的多个版本,并且我认为使用 ccache 来加快进程。

ccache howtos 有一些示例建议创建名为 gcc、g++ 等的符号链接,并确保它们出现在原始 gcc 二进制文件之前的 PATH 中,因此使用 ccache 代替。

到目前为止一切顺利,但我只想在编译这个特定应用程序时使用 ccache,并非总是如此。

当然,我可以编写一个 shell 脚本,在每次我想编译应用程序时尝试创建这些符号链接,并在编译应用程序时删除它们。但这对我来说似乎是文件系统滥用。

有没有更好的方法来选择性地使用 ccache,而不是总是这样?

对于单个源代码文件的编译,我可以手动调用 ccache 而不是 gcc 并完成,但我必须处理一个复杂的应用程序,该应用程序对多个源代码文件使用自动构建系统。

0 投票
2 回答
838 浏览

cmake - ccache 在不删除 CMake 文件的情况下不会命中缓存

我正在尝试将 ccache 与 CMake 一起使用。我已将符号链接命名为gcc,g++c++in /usr/local/bin。如果我运行make,向 CMakeLists.txt 添加一些不影响已编译文件的更改(添加未使用的库只是为了强制构建所有目标)并重新运行make,所有内容都会重新编译,就好像没有 cca​​che 一样。但是,如果我删除所有 CMake 生成的文件然后调用cmake; make,一切正常,并且从缓存中检索目标文件,即使我更改了 CMakeLists.txt。

看起来 CMake 生成的东西阻止了缓存。我尝试搜索 and 的详细输出makecmake但找不到任何可能导致此行为的依赖项。

0 投票
3 回答
460 浏览

visual-c++ - 使用 MSVC 获取预处理源代码的最快方法是什么?

我正在尝试找到获取 C 源文件的完整预处理源代码(我不需要#line 信息其他注释,只需要原始源代码)的最快方法。

我有以下仅包含 Windows 头文件 ( mini.c) 的小测试程序:

然后,我使用 Microsoft Visual Studio 2005 运行以下命令:

生成一个 2.5MB 的 mini.i 文件需要 6 秒;将其更改为

(跳过注释和#line 信息)只需 0.5 秒即可写入 2.1MB 的输出。

有没有人知道在不使用预编译头文件的情况下进一步改进这一点的好技术?

我问的原因是我为 MSVC 编写了流行的ccache工具的变体。作为工作的一部分,程序需要计算预处理源代码(和其他一些东西)的哈希和。我想尽可能快地做到这一点。

也许有可用的专用预处理器二进制文件,或其他可能有帮助的命令行开关?

更新:我刚刚想到的一个想法:定义WIN32_LEAN_AND_MEAN宏以去除许多很少需要的代码。这将上述预处理器的运行速度提高了大约 3 倍。

0 投票
1 回答
3031 浏览

windows - 在 Windows 上使用 MingW 的 ccache

我正在尝试使用 ccache,但是当我尝试编译我的项目时出现此错误:

ccache:致命:无法确定缓存目录

我从这里下载文件,如何知道 ccache 使用的相应目录。

0 投票
1 回答
641 浏览

c# - .Net 和/或单声道是否有等效的 ccache 或 distcc

我最近在 linux 和 windows 上构建了相当多的 c#,构建之间的变化并不多,这一切仍然需要永远。

当使用 gcc 和 g++ 时,我会从使用 ccache 和在较小程度上使用 distcc 获得巨大的速度优势。windows 或 mono 上的 c# 编译器是否有等价物?