77# runtime-base
88# runtime-debug-base
99# builder-gcc
10+ # builder-clang
1011# dev-gcc
1112# dev-clang
1213#
1314# Suggested image tags:
1415# cpp-runtime-base:bookworm-v1
1516# cpp-runtime-debug-base:bookworm-v1
1617# cpp-builder-gcc:bookworm-v1
18+ # cpp-builder-clang:bookworm-v1
1719# cpp-dev-gcc:bookworm-v1
1820# cpp-dev-clang:bookworm-v1
1921# ============================================================
@@ -22,6 +24,8 @@ ARG DEBIAN_VERSION=bookworm
2224ARG UV_VERSION=0.11.10
2325ARG CONAN_VERSION=2.28.1
2426ARG PYTHON_VERSION=3.12.0
27+ ARG GCC_VERSION=12
28+ ARG LLVM_VERSION=14
2529ARG USERNAME=dev
2630ARG UID=1000
2731ARG GID=1000
@@ -108,6 +112,7 @@ FROM os-base AS builder-base
108112
109113ARG CONAN_VERSION
110114ARG PYTHON_VERSION
115+ ARG GCC_VERSION
111116
112117ENV PIP_DISABLE_PIP_VERSION_CHECK=1 \
113118 CONAN_HOME=/root/.conan2 \
@@ -120,6 +125,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
120125 build-essential \
121126 gcc \
122127 g++ \
128+ libgcc-${GCC_VERSION}-dev \
123129 cmake \
124130 ninja-build \
125131 make \
@@ -169,7 +175,40 @@ CMD ["/bin/bash"]
169175
170176
171177# ============================================================
172- # 6. dev-base
178+ # 6. builder-clang
179+ # CI/CD Clang 编译镜像
180+ # ============================================================
181+ FROM builder-base AS builder-clang
182+
183+ ARG LLVM_VERSION
184+
185+ USER root
186+
187+ RUN apt-get update && apt-get install -y --no-install-recommends \
188+ clang \
189+ lld \
190+ libclang-rt-${LLVM_VERSION}-dev \
191+ && rm -rf /var/lib/apt/lists/*
192+
193+ ENV CC=clang \
194+ CXX=clang++
195+
196+ RUN conan profile detect --force \
197+ && PROFILE="$(conan profile path default)" \
198+ && if grep -q '^compiler.cppstd=' "$PROFILE"; then \
199+ sed -i 's/^compiler.cppstd=.*/compiler.cppstd=gnu20/' "$PROFILE"; \
200+ else \
201+ sed -i '/^\[settings\]/a compiler.cppstd=gnu20' "$PROFILE"; \
202+ fi \
203+ && conan profile show -pr default
204+
205+ WORKDIR /workspace
206+
207+ CMD ["/bin/bash"]
208+
209+
210+ # ============================================================
211+ # 7. dev-base
173212# 开发镜像公共基础层
174213# ============================================================
175214FROM builder-base AS dev-base
@@ -248,7 +287,7 @@ CMD ["/usr/sbin/sshd", "-D", "-e"]
248287
249288
250289# ============================================================
251- # 7 . dev-gcc
290+ # 8 . dev-gcc
252291# GCC 开发镜像
253292# ============================================================
254293FROM dev-base AS dev-gcc
@@ -282,11 +321,13 @@ CMD ["/usr/sbin/sshd", "-D", "-e"]
282321
283322
284323# ============================================================
285- # 8 . dev-clang
324+ # 9 . dev-clang
286325# Clang / LLVM 开发镜像
287326# ============================================================
288327FROM dev-base AS dev-clang
289328
329+ ARG LLVM_VERSION
330+
290331USER root
291332
292333RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -296,6 +337,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
296337 clang-tidy \
297338 lld \
298339 lldb \
340+ libclang-rt-${LLVM_VERSION}-dev \
299341 gdb \
300342 && rm -rf /var/lib/apt/lists/*
301343
@@ -318,4 +360,4 @@ RUN conan profile detect --force \
318360
319361USER root
320362WORKDIR /workspace
321- CMD ["/usr/sbin/sshd", "-D", "-e"]
363+ CMD ["/usr/sbin/sshd", "-D", "-e"]
0 commit comments