在远程 Docker 容器中开发时使用本地 Clang 格式

Using local Clang-format when developing in a remote Docker container

我正在使用连接到 Docker 容器的 VS Code:项目文件和编译工具位于那里。主机系统是 macOS Big Sur。

我正在使用 Clang-Format 扩展,但是 Docker 图像中可用的 clang-format 非常过时并且无法升级(由于外部原因),所以我无法使用项目的 .clang-format 文件(其中包含较新的指令)。

我在主机本地安装了最新版本的 clang-format。有什么方法可以配置 VS Code 以使用 clang-format 版本而不是 Docker 图像中的版本?

无法使用本地副本,因为 VS Code 将 运行 它放在 Docker 而不是主机中,并且二进制文件不兼容。

我发现最好的方法是在主机中为 Linux 下载 clang-format,与容器共享并告诉 VS Code 使用它:

  1. 下载(或编译)clang-format兼容Linux版本的容器。在我的例子中,容器基于 Ubuntu 20.04,所以已经有一个预编译版本的 clang+LLVM 可用 in the official project repo.

  2. 将其解压缩到可以绑定到容器的目录中(您可以在 Docker 桌面的“设置”>“资源”>“文件共享”下执行此操作)。就我而言,我为此准备了一个:~/shared,所以我在 ~/shared/clang+llvm-13.0.0.

    下解压缩了它
  3. docker-compose.yml文件中挂载clang-format所在的本地目录(使用最适合您的远程目录):

services:
    volumes:
      - ~/shared/clang+llvm-13.0.0:/home/user/clang+llvm-13.0.0:ro
  1. 最后,在用户settings.json:
  2. 中设置可执行文件的路径
{
  "clang-format.executable": "/home/user/clang+llvm-13.0.0/bin/clang-format"
}

此方法的唯一缺点是 clang-format.executable 设置是用户范围的,没有工作区级别的设置,因此更改适用于所有情况。就我而言,这不是什么大问题,因为一切都在容器中完成,但我知道这可能不是混合设置的最佳选择。