首页 > 解决方案 > 预热 emscripten 缓存以加快构建速度

问题描述

全新安装的 emscripten 编译程序会慢得多,因为它需要构建系统库的缓存。它将输出如下行:

cache:INFO: generating system library: libc.a... (this will be cached in "/emsdk_portable/.data/cache/wasm/libc.a" for subsequent builds)

有一个标志(https://emscripten.org/docs/tools_reference/emcc.html),--clear-cache但我想做相反的事情。我正在寻找一个命令来填充所有系统库的 emscripten 缓存。我正在寻找这样做,以便我可以在 docker 中捕获输出,然后将其用于更快的 CI 构建。

有人知道我可以这样做吗?

标签: emscripten

解决方案


更新:

embuilder.py工具负责构建 emscripten 库。您可以运行它以使用系统库来预热缓存:

embuilder.py build MINIMAL

或者,如果您正在使用emscripten/emsdkDocker 映像,并且想要将缓存内容存储在其中/my/own/cache以保持持久性,您可以运行:

docker run --rm \
    -v /my/own/cache:/emsdk/upstream/emscripten/cache \
    emscripten/emsdk \
    /emsdk/upstream/emscripten/embuilder.py build MINIMAL

您可以通过查看源代码或传递--help标志来找到有关该命令的更多详细信息。

原始答案:

如果您正在使用emscripten/emsdkDocker 映像并希望缓存在编译过程中保持不变,那么您可以使用绑定/卷挂载覆盖容器的缓存文件夹:

cd /my/project/folder
docker run --rm \
    -v $(pwd):/src \
    -v $(pwd)/my_emscripten_cache:/emsdk/upstream/emscripten/cache \
    emscripten/emsdk \
    make

第一次运行它显然会很慢,但随后的运行应该能够利用缓存并运行得更快。


推荐阅读