引言

CMake是一个跨平台的安装(编译)工具,用于管理和构建C/C++项目。Docker则是一个开源的应用容器引擎,用于开发、运输和运行应用。结合CMake和Docker,我们可以轻松地构建、打包和分发跨平台的应用程序。本文将带你从入门到实战,掌握如何使用CMake构建Docker镜像。

CMake入门

1. CMake基本概念

CMake的核心概念是“项目”和“目标”。一个CMake项目包含多个目标,每个目标定义了构建过程中要完成的任务。

2. 创建CMake项目

要创建一个CMake项目,首先需要创建一个名为CMakeLists.txt的文件,并在其中定义项目的名称、源文件、包含目录等信息。

cmake_minimum_required(VERSION 3.10) project(MyProject) set(CMAKE_CXX_STANDARD 14) add_executable(MyProject main.cpp) target_include_directories(MyProject PRIVATE include) 

3. 编译项目

使用CMake编译器生成项目构建系统,然后执行构建命令。

mkdir build && cd build cmake .. make 

Docker入门

1. Docker基本概念

Docker将应用程序及其依赖项打包成一个称为“镜像”的容器,以便在不同的环境中运行。

2. 创建Dockerfile

Dockerfile是一个包含指令的文本文件,用于定义如何构建Docker镜像。

FROM gnu/gcc:latest WORKDIR /usr/src/app COPY . . RUN cmake . && make CMD ["./MyProject"] 

3. 构建Docker镜像

docker build -t myproject . 

CMake与Docker结合

1. 使用CMake构建Docker镜像

将CMake项目目录与Dockerfile放在同一目录下,然后执行以下命令:

docker build -t myproject . 

2. 运行Docker容器

docker run -it myproject 

实战案例:构建一个C++程序Docker镜像

1. 创建C++程序

创建一个名为main.cpp的文件:

#include <iostream> #include "include/mylib.h" int main() { std::cout << "Hello, World!" << std::endl; return 0; } 

创建一个名为include/mylib.h的文件:

#ifndef MYLIB_H #define MYLIB_H void myFunction() { std::cout << "My library function" << std::endl; } #endif 

2. 创建CMakeLists.txt

cmake_minimum_required(VERSION 3.10) project(MyProject) set(CMAKE_CXX_STANDARD 14) add_executable(MyProject main.cpp) target_include_directories(MyProject PRIVATE include) 

3. 创建Dockerfile

FROM gnu/gcc:latest WORKDIR /usr/src/app COPY . . RUN cmake . && make CMD ["./MyProject"] 

4. 构建Docker镜像

docker build -t myproject . 

5. 运行Docker容器

docker run -it myproject 

总结

通过本文的介绍,你现在已经掌握了如何使用CMake构建Docker镜像。在实际开发过程中,你可以根据项目需求,调整CMake和Dockerfile中的内容,以构建适合自己项目的Docker镜像。