如何有选择地使用ccache?

19 linux gcc ccache

我必须编译用C++编写的应用程序的多个版本,我认为使用ccache来加速这个过程.

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

到目前为止一切都那么好,但我只想在编译这个特定的应用程序时使用ccache,而不是总是如此.

当然,我可以编写一个shell脚本,每次我想编译应用程序时都会尝试创建这些符号链接,并在编译应用程序时删除它们.但这看起来像文件系统滥用给我.

是否有更好的方法有选择地使用ccache,而不是总是?

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

mim*_*lea 20

绕过ccache只是:

export CCACHE_DISABLE=1
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息:

man ccache
Run Code Online (Sandbox Code Playgroud)

...

        If you set the environment variable CCACHE_DISABLE then ccache will just call the real
       compiler, bypassing the cache completely.
Run Code Online (Sandbox Code Playgroud)

...


小智 3

什么操作系统?Linux?大多数 ccache 打包版本已经将这些符号链接放入一个目录中,例如在我的 Fedora 机器上,它们位于 /usr/lib64/ccache 中。

所以你可以这样做

PATH=/usr/lib64/ccache:${PATH} make
Run Code Online (Sandbox Code Playgroud)

当你想使用 ccache 构建时。

大多数软件包还会在 /etc/profile.d/ 中安装一个文件,通过将其添加到上面的 PATH 中,该文件会自动启用 ccache。

如果您的系统出现这种情况,只需在您的环境中设置CCACHE_DISABLE=1(请参阅man ccache参考资料 获取更多信息)以禁用 ccache - ccache 仍将运行,但只会调用真正的编译器。