C++ Dev Container 配置
如何使用
本文提供一个可用于C++开发的Dockerfile
, 作为开发容器(dev container
)使用.
dev container
的使用教程可以参考我的博客: VS Code Dev Containers 使用教程
为什么选择 Fedora
作为基础版本
Fedora
相比起流行的Ubuntu
来说, 软件包更新速度快.
C++在不断更新语言功能, 更新的编译器版本对新特性的支持越多, 因而我选择了Fedora
作为基础版本.
已安装的包
gcc
编译器套装clang
编译器套装gdb
调试器vcpkg
包管理器cmake
构建工具ninja
构建工具
vcpkg
中已经安装的包:
fmt
gtest
RapidJSON
Dockerfile for C++ Dev Container
FROM fedora:latest
ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=$USER_UID
# Install required packages
RUN dnf update -y && \
dnf groupinstall "Development Tools" -y && \
dnf install -y \
clang \
clang-tools-extra \
cmake \
gdb \
iproute \
java-21-openjdk \
libasan \
libubsan \
ninja-build \
procps \
which
# Create a non-root user to use if preferred
# see https://aka.ms/vscode-remote/containers/non-root-user.
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
# setup vcpkg
RUN git clone --depth=1 \
--single-branch --branch=master \
https://github.com/microsoft/vcpkg /home/$USERNAME/vcpkg \
&& /home/$USERNAME/vcpkg/bootstrap-vcpkg.sh \
&& /home/$USERNAME/vcpkg/vcpkg integrate install \
&& /home/$USERNAME/vcpkg/vcpkg install \
fmt \
gtest \
RapidJSON \
spdlog
COPY Dockerfile /tmp/Dockerfile
如何使用
本Dockerfile
是配合VS Code dev container使用的. 这里有一个样例仓库, 可以按照如下的步骤打开使用:
- clone 仓库
git clone https://gitee.com/aronic/cmake-project-2024.git
- 使用VS Code打开仓库
- 打开命令面板(Ctrl+Shift+P)
- 搜索并选择
Dev Containers: Reopen in Container
- dev container 会自动构建并启动, 并且会根据配置安装好插件.
可以看到左下角的><
符号, 说明已经在dev container中了.
底部的状态栏里面有一些CMake
相关的配置, 说明插件已经安装好了.
安装系统包
可以打开终端, 使用dnf
安装系统包, 这些包会在编辑器关闭后丢弃. 常用的包建议写入Dockerfile
中.
dnf install -y [package]
使用vcpkg
安装包
可以打开终端, 使用vcpkg
安装包, 这些包会在编辑器关闭后丢弃. 常用的包建议写入Dockerfile
中.
$ cd /home/vscode/vcpkg
$ vcpkg search [package]
$ vcpkg install [package]
在cmake
中使用vcpkg
构建项目
$ mkdir build && cd build
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=/home/vscode/vcpkg/scripts/buildsystems/vcpkg.cmake
样例参考
我在gitee上有一个简单的C++项目, 使用了vcpkg
管理依赖, 可以参考: CMake Project Sample