“ccache”配置

2024-01-06

我有一个与 ccache 配置相关的问题。在我们的开发环境中,我们有数百个使用绝对路径构建对象的 make 文件。

我想加快进程并使用 ccache。不幸的是,当从不同位置编译时,我可以看到缓存未命中。下面是一个例子 简化了源文件放置在不同目录中的情况。我该如何设置 ccache 才能获得正确的命中率?

我尝试设置 CCACHE_BASEDIR 变量但没有成功:

developer@crunchbang:~$ pwd
/home/developer
developer@crunchbang:~$ ccache -s
cache directory                     /home/developer/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                       1.0 Gbytes
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name1/contest.cpp
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name2/contest.cpp
developer@crunchbang:~$ ccache -s
cache directory                     /home/developer/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             2
files in cache                         4
cache size                            16 Kbytes
max cache size                       1.0 Gbytes
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name1/contest.cpp
developer@crunchbang:~$ ccache g++ -c /home/developer/unique_name2/contest.cpp
developer@crunchbang:~$ ccache -s
cache directory                     /home/developer/.ccache
cache hit (direct)                     2
cache hit (preprocessed)               0
cache miss                             2
files in cache                         4
cache size                            16 Kbytes
max cache size                       1.0 Gbytes
developer@crunchbang:~$ ccache --version
ccache version 3.1.7

Copyright (C) 2002-2007 Andrew Tridgell
Copyright (C) 2009-2011 Joel Rosdahl

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.

您是否考虑过更改 Makefile 以使用相对路径?你可以使用提到的技术在这篇文章中 https://stackoverflow.com/questions/2564634/bash-convert-absolute-path-into-relative-path-given-a-current-directory无需进行太多更改即可做到这一点。

另外请注意:CCACHE_BASEDIR 使路径相对于当前工作目录(也许可以在联机帮助页中更清楚地指定一些内容)。这意味着您的 2 个编译命令将导致(CCACHE_BASEDIR=/home/developer):

developer@crunchbang:~$ ccache g++ -c unique_name1/contest.cpp
developer@crunchbang:~$ ccache g++ -c unique_name2/contest.cpp

换句话说:它们仍然会有所不同。 仅当您在 unique_name 目录中进行编译时,此问题才会得到解决。 例如

developer@crunchbang:~$ cd /home/developer/unique_name1 && ccache g++ -c /home/developer/unique_name1/contest.cpp
developer@crunchbang:~$ cd /home/developer/unique_name2 && ccache g++ -c /home/developer/unique_name2/contest.cpp

将导致:

developer@crunchbang:~$ ccache g++ -c contest.cpp
developer@crunchbang:~$ ccache g++ -c contest.cpp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“ccache”配置 的相关文章

随机推荐

  • Bootstrap selectpicker 在克隆的 div 中刷新后重复

    我有一个引导选择器 div div class hidden div div
  • tf.train.get_global_step() 在 TensorFlow 中做什么?

    函数有什么用tf train get global step 在 TensorFlow 中 在机器学习概念中它相当于什么 当训练过程因某种原因停止时 您可以使用它从上次中断的地方重新开始训练 当然 您随时可以在不知道情况的情况下重新开始训练
  • PHP - 检查两个数组是否相等

    我想检查两个数组是否相等 我的意思是 相同的大小 相同的索引 相同的值 我怎样才能做到这一点 Using 根据用户的建议 我希望打印以下内容enter如果数组中至少有一个元素不同 但事实上并非如此 if POST atlOriginal o
  • Delphi 通用 TInterfaceList 可能吗?

    在Delphi 2010中 我定义了一个通用的TInterfaceList 如下所示 type TInterfaceList
  • ActiveAdmin 如何添加没有模型的自定义控制器[重复]

    这个问题在这里已经有答案了 可能的重复 将页面添加到活动管理 https stackoverflow com questions 7639978 add page to active admin 我目前正在寻找一种解决方案 用于将没有模型的
  • Microsoft .NET 4.0 完整框架和客户端配置文件之间的差异

    Microsoft NET Framework 4 0 完整安装程序 32 位和 64 位 为 48 1 MB 客户端配置文件安装程序为 41 0 MB 提取的安装文件分别为 237 MB 和 194 MB 安装后分别为 537 MB 和
  • D3.js - 是否可以在力导向图和节点链接树之间制作动画?

    我正在使用D3 js库并查看力导向图演示 http mbostock github com d3 ex force html http mbostock github com d3 ex force html 我也在查看节点链接树 http
  • 如何在 sitecore 中确定给定项目是否为起始项目?

    在配置文件中 我们为元素中的每个网站设置启动项 例如 startItem Home 我们还可以在代码中选择启动项 但我想问的是如何确定任何选定的项目是否是起始项目 至少我们可以选择开始项目并与给定项目进行比较 但我认为这不是优雅的代码 我们
  • SendMessage消息号的解释?

    我已经成功地使用 Windows SendMessage 方法来帮助我在文本编辑器中执行各种操作 但每次我只是复制和粘贴其他人建议的代码 而且我并不真正知道它的含义 总是有一个神秘的消息号作为参数 我如何知道这些代码的含义 以便我能够真正理
  • 需要电子邮件地址域 jQuery 验证 [重复]

    这个问题在这里已经有答案了 我正在使用以下代码 与jQuery 验证插件 http jqueryvalidation org 验证电子邮件地址 schedule tour form validate rules Email required
  • MongoDb 近/geonear 可变距离查询

    我想执行一个查询 其中距离是集合中的动态字段 集合中的条目示例 name myName location lat 10 lng 20 maximumDistance 10 name myName2 location lat 20 lng 2
  • Polymer 1.x:纸张对话框模式出现在应用程序标题布局后面

    我想将一个子元素 子元素 放入app header layout 子元素包含一个paper dialog modal 当我打开模式时 我希望看到对话框出现在front的背景 相反 会出现对话框behind背景 如何让模式对话框出现在背景前面
  • 使用selenium在多个浏览器上同时运行python SCRIPT

    我想使用 selenium 在多个浏览器上运行我的脚本 到目前为止 我可以通过一次打开一个浏览器来执行该操作 例如 注册亚马逊 我希望能够同时向亚马逊注册两个用户 这是我现在拥有的代码 import time from selenium i
  • cin.get() 循环

    我试图从标准输入读取 第一行是我要阅读的行数 我接下来读到的行将再次打印 这是代码 include
  • Print/Debug.Log 未在 Unity 控制台上显示输出

    I am trying to print a simple statement using C on Unity Console but i don t know why it is not printing 如果打印有not work D
  • 为 UWP 构建 OpenCV

    我目前正在努力为 UWP 构建 OpenCV 我已经用谷歌搜索了很多并发现微软的 OpenCV Github 存储库 https github com Microsoft opencv tree vs2015 samples从技术上讲 这应
  • 如何在 swift 中声明一个可在 Objective C 中使用的常量

    如果我将 swift 常数声明为全局常数 like let a 123 but the a无法在以下位置找到目标c 怎么解决这个问题呢 SWIFT代码 public class MyClass NSObject public static
  • C++ HDF5 找不到 -lhdf5d

    情况 我想创建一个程序来读取一些内容 hdf5 file 我做了什么 没什么 但添加hdf5 lib到项目 Problem 我收到两个错误 当我尝试运行该程序时 cannot find lhdf5d error ld returned 1
  • SELECT 非规范化列到单独的记录中?

    我正在使用 SQL 一点 这样如果我在工作面试中被问到 我就不会完全不知道它 我的朋友最近在面试时被问到以下问题 他答不出来 我问了工作中熟悉 SQL 的人 他也不知道 你们能帮我回答这个问题 然后解释一下它是如何工作的吗 请 问题 数据库
  • “ccache”配置

    我有一个与 ccache 配置相关的问题 在我们的开发环境中 我们有数百个使用绝对路径构建对象的 make 文件 我想加快进程并使用 ccache 不幸的是 当从不同位置编译时 我可以看到缓存未命中 下面是一个例子 简化了源文件放置在不同目