clang + icecc + ccache

时间:2013-04-03 12:37:20

标签: cmake clang ccache

我正在尝试用clang + icecc + ccache构建。但我无法让它发挥作用。我在同一个网络上使用gcc + icecc + ccache成功构建。

以下是软件版本:

Clang version  : Ubuntu clang version 3.2-9 (tags/RELEASE_32/final) (based on LLVM 3.2) 
ccache version : 3.1.7
icecc version  : ICECC 0.9.7

我在/ usr / lib / ccache中有clang sym链接:

$ ls -l /usr/lib/ccache/clang*
/usr/lib/ccache/clang -> ../../bin/ccache*
/usr/lib/ccache/clang++ -> ../../bin/ccache*

我在/ usr / lib / icecc / bin中有clang sym链接:

$ ls -l /usr/lib/icecc/bin/clang*
/usr/lib/icecc/bin/clang -> ../../../bin/icecc*
/usr/lib/icecc/bin/clang++ -> ../../../bin/icecc*

所以这就是我的尝试:

我已尝试在我的PATH环境变量中首先使用ccache:

export PATH=/usr/lib/ccache:/usr/lib/icecc/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

但它只是不分发编译。

我第一次尝试使用icecc:

export PATH=/usr/lib/icecc/bin/:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

它给了我这个输出:

ICECC[5240] 14:27:17: icecream seems to have invoked itself recursively!

根据这个帖子https://bugzilla.redhat.com/show_bug.cgi?id=377761这是正常的。

我只尝试过icecc:

export PATH=/usr/lib/icecc/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

但它只是不分发编译。

所以我有点被困在这里,我找不到任何说这是不可能的事情,所以如果有人有解决方案或替代解决方案(不同于icecc)。

感谢。

1 个答案:

答案 0 :(得分:2)

要将ccache与其他编译器包装器一起使用,请将CCACHE_PREFIX设置为另一个包装器。在你的情况下:

export PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export CCACHE_PREFIX=icecc

这样做有几个原因:

  • 它确实有效。
  • 将正确检测到编译器升级。
  • 缓存结果将在有和没有icecc的编辑之间共享。
  • ccache在运行预处理器时不会不必要地调用icecc。

Using ccache with other compiler wrappersccache manual部分了解详情。