【第一节】CMake的介绍和安装

目录

一、CMake的介绍

1.1 CMake:跨平台构建系统生成器

1.2 CMake核心工作机制

1.2.1 声明式配置

1.2.2 构建系统抽象层

1.2.3 沙盒化构建实践

1.2.4 典型工作流分解

1.3 企业级应用价值

二、 CMake和Make的区别

2.1 核心定位

2.2 功能层级关系

2.3 关键差异对比

2.4 典型工作流对比

2.5  技术演进趋势

2.6 选择策略

2.7 混合使用案例

2.7 总结 

三、CMake 安装与配置

3.1 支持的操作系统

3.2 CMake 安装

3.2.1 Windows 系统安装

3.2.2  macOS 系统

3.2.3 Linux 系统

3.3 配置 CMake

3.3.1 Windows 系统

3.3.2 macOS 和 Linux 系统

3.4 CMake GUI 使用

3.4.1 启动 CMake GUI

3.4.2 配置项目

3.5 总结


一、CMake的介绍

1.1 CMake:跨平台构建系统生成器

        CMake是一款开源的元构建系统工具,采用平台与编译器无关的设计理念,专为管理复杂软件项目的构建流程而开发。其核心功能是通过抽象化构建规则,实现多层级工程结构、多目标产物(可执行程序/静态库/动态库)的统一管理,显著提升跨平台项目的构建效率。

1.2 CMake核心工作机制

1.2.1 声明式配置

        基于`CMakeLists.txt`配置文件定义工程属性:
                源码组织结构(多级目录支持)
                编译工具链配置(C/C++标准、编译器标志)
                依赖管理(第三方库自动探测与链接)
                目标生成策略(构建类型、安装规则)

1.2.2 构建系统抽象层

        作为构建系统的生成器(而非直接构建工具),CMake将高级构建描述转换为本地化构建指令:
        生成标准构建文件:Makefile(Unix)、Ninja(高性能构建)、*.sln(Visual Studio)等
        适配异构开发环境:支持Xcode、Android NDK、交叉编译等场景

1.2.3 沙盒化构建实践

   采用out-of-source构建模式,严格隔离源码与构建产物:

   mkdir build && cd build  
   cmake ..  # 配置阶段:生成平台专属构建系统  
   cmake --build .  # 执行实际编译

1.2.4 典型工作流分解

(1) 工程建模阶段 
   - 编写`CMakeLists.txt`声明项目架构
   - 定义编译特性(如C++17支持、警告级别)
   - 配置依赖关系(如Boost、OpenCV)

(2)系统生成阶段

cmake_minimum_required(VERSION 3.20)  
project(MyApp LANGUAGES CXX)  
add_executable(app_main src/main.cpp)  
target_link_libraries(app_main PRIVATE Threads::Threads)

(3)构建执行阶段
   - 调用本地构建工具链(如`make -j8`)
   - 支持增量编译、并行构建等加速策略

1.3 企业级应用价值

        统一大型代码库构建标准(Google、NASA等机构采用)
        实现CI/CD流水线的构建环境标准化
        降低多平台产品维护成本(Windows/Linux/macOS同步构建)  

二、 CMake和Make的区别

2.1 核心定位

CMake
        元构建系统(Meta Build System),**生成**底层构建工具所需的配置文件(如 Makefile、Ninja 文件、Visual Studio 工程等)。  
        核心价值:抽象构建规则,实现跨平台一致性,减少人工维护多平台构建脚本的成本。

Make
        本地化构建工具(Build Tool),直接**执行**编译指令,依赖手工编写的 Makefile 文件。  
        核心价值:基于文件依赖关系实现增量编译,高效管理编译流程。

2.2 功能层级关系

graph LR
  A[CMakeLists.txt] --> B(CMake生成器)
  B --> C1[Makefile]
  B --> C2[Ninja.build]
  B --> C3[VS工程文件]
  C1 --> D1[Make执行编译]
  C2 --> D2[Ninja执行编译]
  C3 --> D3[MSBuild执行编译]


**CMake** 位于构建工具链的上游,**Make** 属于下游执行工具。

2.3 关键差异对比

2.4 典型工作流对比

CMake 项目流程

# 配置阶段(抽象层)
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..

# 构建阶段(具体执行)
cmake --build . -j8  # 调用底层构建工具(make/ninja等)

Make 项目流程

# 直接执行构建(无配置阶段)
make -j8

2.5  技术演进趋势

CMake 的崛起
        C++11 后模块化编程普及,传统 Makefile 难以应对复杂依赖  
        跨平台开发需求激增(Windows/macOS/Linux/嵌入式)  
        现代构建工具链整合(如vcpkg/conan包管理)  

Make 的坚守领域
        Linux内核等高度优化场景(定制化Makefile)  
        小型工具/脚本的快速构建  
        作为CMake生成的底层执行引擎  

2.6 选择策略

优先选择 CMake 的场景
        需要支持 Windows/macOS/Linux 多平台构建  
        项目包含多个子模块/第三方库依赖  
        团队协作需统一构建标准  
        需要与IDE(如CLion、VS)深度集成  

适合直接使用 Make 的场景 
        单一平台(如纯Linux环境)维护的遗留项目  
        编译规则极简(<10个源文件)  
        对构建性能有极端优化需求  

2.7 混合使用案例

        大型项目常采用 **CMake + Make** 组合:  

# CMakeLists.txt 显式指定生成Makefile
set(CMAKE_GENERATOR "Unix Makefiles")

        此模式兼顾了CMake的跨平台能力和Make的执行效率。

2.7 总结 

        CMake 是**构建系统的抽象层设计工具**,解决多平台构建的一致性问题;  
        Make 是**本地化构建执行引擎**,专注高效处理编译任务。  
        现代C/C++项目通常以CMake作为入口,再根据实际环境调用Make/Ninja等工具完成最终构建。

三、CMake 安装与配置

        CMake 是一个跨平台的自动化构建工具,广泛应用于 C/C++ 项目的构建管理。下面将详细介绍 CMake 在不同操作系统上的安装与配置方法,并指导用户如何验证安装和配置环境。

3.1 支持的操作系统

CMake 支持多种主流操作系统,包括:
- **Windows**
- **macOS**
- **Linux**
- **FreeBSD**
- **OpenBSD**
- **Solaris**
- **AIX**

3.2 CMake 安装

        CMake 提供了源码包和预编译的二进制包,用户可以根据需求选择适合的安装方式。以下是 Windows、macOS 和 Linux 系统的安装步骤。

3.2.1 Windows 系统安装

(1)下载安装包
   访问 [CMake 官方下载页面](https://cmake.org/download/),选择适用于 Windows 的 `.msi` 安装包。

(2)安装 CMake
   - 双击下载的 `.msi` 文件,启动安装向导。  
   - 在安装过程中,勾选 **“Add CMake to the system PATH for all users”**,以便在命令行中直接使用 `cmake` 命令。

(3)验证安装
   打开命令提示符(CMD)或 PowerShell,输入以下命令:

   cmake --version


   如果显示 CMake 版本信息,则安装成功。

3.2.2  macOS 系统

        macOS 用户可以通过 Homebrew 或官方安装包进行安装。

方法一:通过 Homebrew 安装
(1)打开终端,执行以下命令:

brew install cmake

方法二:通过官方安装包安装
(1). 访问 [CMake 官方下载页面](https://cmake.org/download/),选择 macOS 版本的 `.dmg` 文件。
(2). 下载并运行 `.dmg` 文件,将 CMake 图标拖动到“应用程序”文件夹。


(3). 配置环境变量:
   - 打开终端,编辑 `~/.bash_profile` 文件:

     vim ~/.bash_profile


   - 添加以下内容:

     export PATH="/Applications/CMake.app/Contents/bin:$PATH"


   - 保存文件并执行以下命令使配置生效:

     source ~/.bash_profile

(4)验证安装
   在终端中输入以下命令:

   cmake --version

        如果显示 CMake 版本信息,则安装成功。

3.2.3 Linux 系统

Linux 用户可以通过包管理器或源码编译安装 CMake。

方法一:通过包管理器安装
- **Ubuntu/Debian**:

  sudo apt-get install cmake


- **Fedora**:

  sudo dnf install cmake


- **Arch Linux**:

  sudo pacman -S cmake

方法二:从源码编译安装
(1) 访问 [CMake 官方下载页面](https://cmake.org/download/),下载源码包。
(2)解压源码包并进入解压后的目录:

   tar -zxvf cmake-x.x.x.tar.gz
   cd cmake-x.x.x


(3)编译并安装:

 ./bootstrap
   make
   sudo make install

(4)验证安装
   在终端中输入以下命令:

   cmake --version


   如果显示 CMake 版本信息,则安装成功。

3.3 配置 CMake

        安装完成后,需确保 CMake 的安装路径已添加到系统的 `PATH` 环境变量中,以便在命令行中直接使用 `cmake` 命令。

3.3.1 Windows 系统

- 如果在安装过程中已选择将 CMake 添加到 `PATH`,则无需额外配置。
- 如果未选择,可手动添加:
(1) 右键点击“此电脑”,选择“属性” -> “高级系统设置” -> “环境变量”。
(2)在“系统变量”中找到 `Path`,点击“编辑”,将 CMake 的安装路径(如 `C:\Program Files\CMake\bin`)添加进去。

3.3.2 macOS 和 Linux 系统

- 如果安装程序未自动配置 `PATH`,可手动编辑 `~/.bash_profile` 或 `~/.zshrc` 文件:

  export PATH="/usr/local/bin:$PATH"


- 执行以下命令使配置生效:

  source ~/.bash_profile

3.4 CMake GUI 使用

        CMake 提供了图形用户界面(GUI),方便用户直观地配置项目。

3.4.1 启动 CMake GUI

         **Windows**:从开始菜单中启动 CMake GUI。


        **macOS/Linux**:在终端中输入以下命令:

  cmake-gui

3.4.2 配置项目

(1)设置源代码目录:指向包含 `CMakeLists.txt` 文件的目录。
(2)设置构建目录:选择一个独立的目录存放生成的构建文件(建议使用 `build` 目录)。
(3)配置与生成:
        点击 **Configure** 按钮,选择编译器和构建选项。
        点击 **Generate** 按钮,生成适合当前平台的构建文件。

3.5 总结

        通过以上步骤,用户可以在 Windows、macOS 和 Linux 系统上成功安装和配置 CMake,并利用其强大的跨平台构建功能管理项目。无论是通过命令行还是 GUI,CMake 都能为用户提供高效、灵活的构建解决方案。

07-27
### CMake 使用教程、安装配置及常见问题解决方案 #### 安装 CMake 在不同的操作系统中,CMake安装方式有所不同。以下是一些常见的安装方法: ##### Linux 系统(以 Ubuntu 为例) 1. **离线安装** 可以从 [CMake 官网](https://cmake.org/download/) 下载适用于 Linux 的压缩包(如 `cmake-x.x.x-linux-x86_64.tar.gz`),然后进行手动安装: ```bash tar -xzvf cmake-x.x.x-linux-x86_64.tar.gz ``` 2. **配置环境变量** 将 CMake 的 `bin` 目录添加到系统环境变量中,以便全局使用: ```bash export PATH=/path/to/cmake/bin:$PATH ``` 可以将上述命令添加到 `~/.bashrc` 或 `~/.zshrc` 文件中,以便每次启动终端时自动加载: ```bash echo 'export PATH=/path/to/cmake/bin:$PATH' >> ~/.bashrc source ~/.bashrc ``` 3. **验证安装** 使用以下命令确认 CMake 是否安装成功: ```bash cmake --version ``` 如果输出 CMake 的版本号,则表示安装成功[^1]。 ##### Windows 系统 1. 从 [CMake 官网](https://cmake.org/download/) 下载 Windows 安装包(`.msi` 文件)。 2. 运行安装程序,并选择将 CMake 添加到系统环境变量中。 3. 打开命令提示符(CMD)或 PowerShell,输入以下命令验证安装: ```bash cmake --version ``` ##### macOS 系统 可以使用 Homebrew 安装 CMake: ```bash brew install cmake ``` 验证安装: ```bash cmake --version ``` #### 配置 CMake 项目 CMake 项目的核心是 `CMakeLists.txt` 文件,它定义了项目的构建规则。以下是一个简单的 CMake 项目配置示例: ```cmake # 指定 CMake 最低版本 cmake_minimum_required(VERSION 3.10) # 定义项目名称 project(HelloCMake) # 添加可执行文件目标 add_executable(hello main.cpp) ``` 1. **创建构建目录** 通常建议在项目根目录下创建一个 `build` 子目录用于存放构建生成的文件: ```bash mkdir build cd build ``` 2. **生成构建文件** 在构建目录中运行 CMake,生成 Makefile 或其他构建系统所需的文件: ```bash cmake .. ``` 3. **编译项目** 使用 `make` 命令进行编译(适用于 Linux/macOS): ```bash make ``` 或者使用 Visual Studio 打开 `.sln` 文件进行编译(适用于 Windows)。 #### 常见问题及解决方法 1. **CMake 找不到编译器** - **问题描述**:CMake配置过程中提示找不到编译器。 - **解决方法**:确保系统中已安装编译器(如 GCC、Clang 或 MSVC),并且编译器的路径已添加到系统环境变量中。 2. **CMakeLists.txt 文件语法错误** - **问题描述**:CMake 配置失败,提示语法错误。 - **解决方法**:检查 `CMakeLists.txt` 文件中的语法是否正确,特别是命令的大小写参数顺序。 3. **找不到依赖库** - **问题描述**:编译过程中提示找不到某些依赖库。 - **解决方法**:确保所有依赖库已正确安装,并且在 `CMakeLists.txt` 中使用 `find_package()` 或 `include_directories()` 正确引用。 4. **Android Studio 中使用 CMake** - **问题描述**:在 Android Studio 中配置 CMake 时遇到问题。 - **解决方法**:可以使用 Android Studio 自带的 CMake 支持,创建一个支持 C++ 的项目,查看生成的 `CMakeLists.txt` 文件,确保路径依赖项配置正确[^5]。 #### 学习资源 - **《CMake + Practice》**:这是一篇适合初学者的中文入门教程,适合了解 CMake 的基本概念使用方法[^2]。 - **官方文档**:[CMake 官方文档](https://cmake.org/cmake/help/latest/) 是深入了解 CMake 各种命令高级用法的最佳资源。 - **实践项目**:通过实际项目学习 CMake 的使用,尤其是复杂的项目结构依赖管理。 ---
评论 230
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值