减少 vcpkg 占用空间

需求

公司的开发机,硬盘只有 1T,编译了几个版本的 Chromium 之后,可用容量告急。经过分析之后,vcpkg 目录居然有几百 GB……直觉告诉稣,这里面有很多擸𢶍。

分析

vcpkg 目录里有这几个子目录是非 Git 跟踪的:

1
2
3
4
/buildtrees/
/downloads/
/installed/
/packages/

很明显,/installed/ 是实际被使用的,所以不能删。

  1. /downloads/ 里是下载的代码压缩包和补丁等。这里可能有很多文件是旧版本,只要不再使用是可以删的。当前版本的文件,可以留着。理由是:万一另一台开发机需要,可以直接复制过去,加快 vcpkg install 速度,毕竟从 GitHub 下载通常比较慢,还容易失败。

  2. /buildtrees/ 里是构建中间文件、日志等临时文件。只要不开发 port,几乎没有价值。

  3. /packages/ 里是构建完成后的“待安装文件”。如果删了,就不能增量构建。举例说明它的作用:比如说 A 库依赖 B 库,而 B 库曾经被安装过,它会被缓存在 /packages/B/目录里,当安装 A 库时,B 库就不需要再编译一遍了。要是把 /packages/ 里面的文件全部删除,则 B 库需要再次编译。这会带来一些副作用,比如说 B 的二进制程序文件会和上次编译的不一样,但实际上它们的版本没变化,下次打包会引入一些版本没变化,但文件内容变化的文件(这并不致命,只是显得不太专业,如果是编译机建议别删,开发机比较无所谓)。

结论

稣先把 /buildtrees/ 里的文件全删了。下次再告急就删 /packages/,毕竟这是开发机。

如果您使用微信,也可以关注公众号 UMU618,在公众号文章里评论。