在远程 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 使用它:
下载(或编译)clang-format
兼容Linux版本的容器。在我的例子中,容器基于 Ubuntu 20.04,所以已经有一个预编译版本的 clang+LLVM 可用 in the official project repo.
将其解压缩到可以绑定到容器的目录中(您可以在 Docker 桌面的“设置”>“资源”>“文件共享”下执行此操作)。就我而言,我为此准备了一个:~/shared
,所以我在 ~/shared/clang+llvm-13.0.0
.
下解压缩了它
在docker-compose.yml
文件中挂载clang-format
所在的本地目录(使用最适合您的远程目录):
services:
volumes:
- ~/shared/clang+llvm-13.0.0:/home/user/clang+llvm-13.0.0:ro
- 最后,在用户
settings.json
: 中设置可执行文件的路径
{
"clang-format.executable": "/home/user/clang+llvm-13.0.0/bin/clang-format"
}
此方法的唯一缺点是 clang-format.executable
设置是用户范围的,没有工作区级别的设置,因此更改适用于所有情况。就我而言,这不是什么大问题,因为一切都在容器中完成,但我知道这可能不是混合设置的最佳选择。
我正在使用连接到 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 使用它:
下载(或编译)
clang-format
兼容Linux版本的容器。在我的例子中,容器基于 Ubuntu 20.04,所以已经有一个预编译版本的 clang+LLVM 可用 in the official project repo.将其解压缩到可以绑定到容器的目录中(您可以在 Docker 桌面的“设置”>“资源”>“文件共享”下执行此操作)。就我而言,我为此准备了一个:
下解压缩了它~/shared
,所以我在~/shared/clang+llvm-13.0.0
.在
docker-compose.yml
文件中挂载clang-format
所在的本地目录(使用最适合您的远程目录):
services:
volumes:
- ~/shared/clang+llvm-13.0.0:/home/user/clang+llvm-13.0.0:ro
- 最后,在用户
settings.json
: 中设置可执行文件的路径
{
"clang-format.executable": "/home/user/clang+llvm-13.0.0/bin/clang-format"
}
此方法的唯一缺点是 clang-format.executable
设置是用户范围的,没有工作区级别的设置,因此更改适用于所有情况。就我而言,这不是什么大问题,因为一切都在容器中完成,但我知道这可能不是混合设置的最佳选择。