CMake Docker 镜像是基于 CMake(跨平台开源构建系统)的容器化部署方案,提供预配置的 CMake 运行环境。该镜像旨在简化跨平台项目构建流程,消除本地环境依赖差异,支持快速集成到开发、测试及 CI/CD 流程中。
-G 参数指定 Generator。CMakeLists.txt 脚本定义项目结构、依赖关系及构建规则,支持条件编译、变量传递和外部依赖管理。CMakeCache.txt 缓存构建配置,加速重复构建过程。latest、3.28、3.27),支持指定 CMake 版本,满足不同项目兼容性需求。跨平台项目构建
适用于需在不同操作系统(如 Linux 开发、Windows 部署)间保持一致构建流程的项目,如 C/C++ 跨平台应用、库开发等。
CI/CD 流程集成
作为 CI/CD 流水线的构建环节,在 Jenkins、GitHub Actions、GitLab CI 等平台中自动化执行项目构建,确保流程一致性。
开发环境标准化
团队统一使用镜像版本,避免因本地 CMake 版本差异导致的“在我电脑上能运行”问题。
临时构建任务
快速验证第三方项目构建流程,无需在本地安装依赖,构建完成后自动清理容器(--rm 参数)。
前提条件
CMakeLists.txt 文件。基本构建命令
通过 docker run 启动容器,挂载项目目录并执行 CMake 命令:
bash# 进入项目根目录,执行 CMake 生成构建文件 docker run --rm -v "$PWD":/app -w /app cmake:latest cmake . # 生成构建文件后,执行 make 构建(需容器内包含 make,或使用对应构建工具) docker run --rm -v "$PWD":/app -w /app cmake:latest make
--rm:构建完成后自动删除容器,避免残留。-v "$PWD":/app:将当前目录(项目根目录)挂载到容器内 /app 目录。-w /app:设置容器工作目录为 /app(项目挂载路径)。cmake:latest:使用最新版本的 CMake 镜像。cmake .:执行 CMake 命令,生成构建文件(默认生成 Makefile)。指定构建工具(Generator)
通过 -G 参数指定构建工具(如 Ninja、Visual Studio):
bash# 使用 Ninja 生成构建文件(需容器支持 Ninja,可选择包含 Ninja 的镜像标签,如 cmake:latest-ninja) docker run --rm -v "$PWD":/app -w /app cmake:latest-ninja cmake -G Ninja .
设置 CMake 参数
通过 -D 参数传递 CMake 变量(如编译选项、安装路径等):
bash# 设置 CMAKE_BUILD_TYPE 为 Release,指定安装路径为 /app/install docker run --rm -v "$PWD":/app -w /app cmake:latest cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/app/install
镜像标签对应 CMake 版本,可通过标签指定版本(完整版本列表见 https://hub.docker.com/_/cmake%EF%BC%89%EF%BC%9A
bash# 使用 CMake 3.27 版本 docker run --rm -v "$PWD":/app -w /app cmake:3.27 cmake . # 使用 CMake 3.26 版本(Alpine 基础镜像,体积更小) docker run --rm -v "$PWD":/app -w /app cmake:3.26-alpine cmake .
挂载缓存卷加速构建
CMake 缓存(如依赖下载缓存、编译中间文件)可通过卷挂载持久化,避免重复下载/编译:
bash# 创建命名卷存储 CMake 缓存 docker volume create cmake_cache # 挂载缓存卷到容器内 CMake 缓存目录 docker run --rm -v "$PWD":/app -v cmake_cache:/root/.cache -w /app cmake:latest cmake .
多阶段构建集成
在 Dockerfile 中集成 CMake 镜像实现多阶段构建(以 C++ 项目为例):
dockerfile# 阶段 1:使用 CMake 构建项目 FROM cmake:latest AS builder WORKDIR /app COPY . . RUN cmake . -DCMAKE_BUILD_TYPE=Release && make -j4 # 阶段 2:构建运行时镜像 FROM alpine:latest COPY --from=builder /app/bin/myapp /usr/local/bin/ CMD ["myapp"]
CMake 镜像无预设环境变量,构建配置需通过命令行参数(如 -D)或 CMakeLists.txt 定义。常用 CMake 变量示例:
| 变量名 | 说明 | 示例值 |
|---|---|---|
CMAKE_BUILD_TYPE | 构建类型(Debug/Release) | Release |
CMAKE_INSTALL_PREFIX | 安装路径 | /usr/local |
CMAKE_CXX_STANDARD | C++ 标准版本 | 17 |
BUILD_SHARED_LIBS | 是否构建共享库(ON/OFF) | ON |
1. 生成构建文件并编译 Debug 版本
bashdocker run --rm -v "$PWD":/app -w /app cmake:3.28 cmake . -DCMAKE_BUILD_TYPE=Debug docker run --rm -v "$PWD":/app -w /app cmake:3.28 make
2. 使用 Ninja 构建并安装项目
bash# 假设使用包含 Ninja 的镜像标签 docker run --rm -v "$PWD":/app -w /app cmake:latest-ninja cmake -G Ninja . -DCMAKE_INSTALL_PREFIX=/app/install docker run --rm -v "$PWD":/app -w /app cmake:latest-ninja ninja install
创建 docker-compose.yml 配置文件,定义构建服务:
yamlversion: '3.8' services: cmake-build: image: cmake:3.28 volumes: - ./:/app - cmake_cache:/root/.cache # 挂载缓存卷 working_dir: /app command: cmake . -DCMAKE_BUILD_TYPE=Release && make -j4 volumes: cmake_cache: # 持久化缓存卷
运行构建:
bashdocker-compose run cmake-build
文件权限:挂载宿主目录时,容器内默认使用 root 用户,可能导致构建产物权限问题。可通过 -u $(id -u):$(id -g) 指定用户 ID 解决:
docker run --rm -u $(id -u):$(id -g) -v "$PWD":/app -w /app cmake:latest cmake .
网络依赖:若构建需下载外部依赖(如 FetchContent),确保容器网络通畅(默认使用宿主网络)。
Windows 路径:Windows 系统下挂载目录需使用 / 分隔路径,示例:
docker run --rm -v "C:/projects/myapp:/app" -w /app cmake:latest cmake .
镜像标签选择:生产环境建议指定具体版本标签(如 3.28.1),避免 latest 标签自动更新导致兼容性问题。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务