活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CMake源码下载与安装详解 手把手教你部署跨平台构建自动化工具

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-10-1 15:20:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

CMake是一个开源、跨平台的构建自动化工具,它使用平台无关的配置文件(CMakeLists.txt)来控制软件编译过程,并生成标准的构建文件(如Unix的Makefile或Windows Visual Studio的项目文件)。CMake被广泛用于C和C++项目的管理,但也支持其他语言。与传统的Make系统相比,CMake提供了更高级的抽象和更简单的语法,使得项目配置更加直观和可维护。

CMake的主要优势包括:

• 跨平台性:同一套CMakeLists.txt可以在不同操作系统上生成对应的构建文件
• 简洁性:相比手写复杂的Makefile,CMake语法更加简洁明了
• 灵活性:支持多种构建工具和IDE,如Make、Ninja、Visual Studio、Xcode等
• 可扩展性:提供了模块化机制,允许用户自定义功能和查找依赖库
• 广泛的社区支持:许多开源项目都使用CMake作为构建系统

准备工作

在开始下载和安装CMake之前,需要确保系统满足一些基本要求:

系统要求

• Windows: Windows 7及以上版本
• Linux: 任何主流发行版(如Ubuntu、CentOS、Debian等)
• macOS: 10.12 Sierra及以上版本

必要依赖

• C++编译器:如GCC、Clang或MSVC
• Make工具:如果计划生成Makefile
• Git(可选):如果从GitHub仓库克隆源码
• OpenSSL开发库(可选):用于cmake-gui的SSL支持

磁盘空间

• 源码下载:约50MB
• 编译过程:约200-500MB
• 安装后:约100-200MB

CMake源码下载

有几种方法可以获取CMake的源码:

方法一:从官方网站下载

1. 访问CMake官方网站:https://cmake.org/
2. 点击”Download”页面
3. 找到”Source”部分,下载最新的源码压缩包(通常是.tar.gz或.zip格式)

例如,要下载CMake 3.25.1版本的源码,可以直接访问:https://cmake.org/files/v3.25/cmake-3.25.1.tar.gz

方法二:使用Git克隆仓库

1. 确保系统已安装Git
2. 打开终端或命令提示符
3. 执行以下命令克隆CMake的GitHub仓库:
  1. git clone https://github.com/Kitware/CMake.git
复制代码

如果需要特定版本,可以使用git tag查看所有版本并检出所需版本:
  1. cd CMake
  2. git tag  # 查看所有版本标签
  3. git checkout v3.25.1  # 检出特定版本
复制代码

方法三:使用包管理器(仅适用于部分Linux发行版)

对于一些Linux发行版,可以通过包管理器直接下载CMake源码:

在Debian/Ubuntu上:
  1. apt-get source cmake
复制代码

在Fedora/CentOS上:
  1. dnf download --source cmake
复制代码

Windows平台下的CMake编译与安装

在Windows平台上编译CMake源码,主要有两种方法:使用Visual Studio或使用MinGW。

方法一:使用Visual Studio编译

1. 安装Visual Studio(2017或更高版本),确保安装了”C++桌面开发”工作负载
2. 下载并解压CMake源码
3. 打开”x64 Native Tools Command Prompt for VS 2019”(或其他版本)命令提示符
4. 进入CMake源码目录
5. 创建并进入构建目录:
  1. mkdir build
  2. cd build
复制代码

1. 配置生成Visual Studio项目文件:
  1. cmake .. -G "Visual Studio 16 2019" -A x64
复制代码

注意:根据你安装的Visual Studio版本,可能需要调整生成器名称。例如:

• Visual Studio 2017: “Visual Studio 15 2017”
• Visual Studio 2019: “Visual Studio 16 2019”
• Visual Studio 2022: “Visual Studio 17 2022”

1. 开始编译:
  1. cmake --build . --config Release
复制代码

1. 安装CMake(可选,如果你想要系统级的安装):
  1. cmake --install . --prefix C:\CMake
复制代码

1. 将CMake添加到系统PATH环境变量中:右键点击”此电脑”或”计算机”,选择”属性”点击”高级系统设置”点击”环境变量”在”系统变量”中找到并编辑”Path”变量添加CMake的bin目录路径(如C:\CMake\bin)
2. 右键点击”此电脑”或”计算机”,选择”属性”
3. 点击”高级系统设置”
4. 点击”环境变量”
5. 在”系统变量”中找到并编辑”Path”变量
6. 添加CMake的bin目录路径(如C:\CMake\bin)

• 右键点击”此电脑”或”计算机”,选择”属性”
• 点击”高级系统设置”
• 点击”环境变量”
• 在”系统变量”中找到并编辑”Path”变量
• 添加CMake的bin目录路径(如C:\CMake\bin)

方法二:使用MinGW编译

1. 安装MinGW-w64工具链,可以从https://www.mingw-w64.org/下载或使用MSYS2
2. 下载并解压CMake源码
3. 打开MinGW命令提示符
4. 进入CMake源码目录
5. 创建并进入构建目录:
  1. mkdir build
  2. cd build
复制代码

1. 配置生成Makefile:
  1. cmake .. -G "MinGW Makefiles"
复制代码

1. 编译:
  1. cmake --build .
复制代码

1. 安装(可选):
  1. cmake --install . --prefix /c/CMake
复制代码

1. 将CMake添加到PATH环境变量(方法同上)

Linux平台下的CMake编译与安装

在Linux平台上编译CMake源码相对简单,通常使用Make作为构建工具。

通用步骤

1. 安装必要的依赖:

在Debian/Ubuntu上:
  1. sudo apt-get update
  2. sudo apt-get install build-essential libssl-dev
复制代码

在Fedora/CentOS上:
  1. sudo dnf groupinstall "Development Tools"
  2. sudo dnf install openssl-devel
复制代码

1. 下载并解压CMake源码:
  1. wget https://cmake.org/files/v3.25/cmake-3.25.1.tar.gz
  2. tar -xzf cmake-3.25.1.tar.gz
  3. cd cmake-3.25.1
复制代码

1. 创建并进入构建目录:
  1. mkdir build
  2. cd build
复制代码

1. 配置生成Makefile:
  1. cmake ..
复制代码

如果需要安装到特定目录,可以使用:
  1. cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
复制代码

1. 编译:
  1. make -j$(nproc)
复制代码

这里的-j$(nproc)参数表示使用所有可用的CPU核心进行并行编译,可以显著加快编译速度。

1. 安装:
  1. sudo make install
复制代码

如果使用了自定义的安装路径,可能不需要sudo。

1. 验证安装:
  1. cmake --version
复制代码

使用Ninja构建系统(可选)

Ninja是一个更快的构建系统,可以替代Make:

1. 安装Ninja:

在Debian/Ubuntu上:
  1. sudo apt-get install ninja-build
复制代码

在Fedora/CentOS上:
  1. sudo dnf install ninja-build
复制代码

1. 配置使用Ninja:
  1. cmake .. -G Ninja
复制代码

1. 编译:
  1. ninja
复制代码

1. 安装:
  1. sudo ninja install
复制代码

macOS平台下的CMake编译与安装

在macOS平台上,可以使用Xcode命令行工具或Homebrew来编译CMake。

方法一:使用Xcode命令行工具

1. 安装Xcode命令行工具:
  1. xcode-select --install
复制代码

1. 下载并解压CMake源码:
  1. curl -O https://cmake.org/files/v3.25/cmake-3.25.1.tar.gz
  2. tar -xzf cmake-3.25.1.tar.gz
  3. cd cmake-3.25.1
复制代码

1. 创建并进入构建目录:
  1. mkdir build
  2. cd build
复制代码

1. 配置生成Makefile:
  1. cmake ..
复制代码

1. 编译:
  1. make -j$(sysctl -n hw.ncpu)
复制代码

1. 安装:
  1. sudo make install
复制代码

方法二:使用Xcode项目(可选)

1. 下载并解压CMake源码(同上)
2. 创建并进入构建目录(同上)
3. 配置生成Xcode项目:
  1. cmake .. -G "Xcode"
复制代码

1. 使用Xcode编译:
  1. cmake --build . --config Release
复制代码

1. 安装:
  1. sudo cmake --install . --config Release
复制代码

方法三:使用Homebrew(最简单)

虽然本文主要介绍从源码编译安装,但值得注意的是,macOS用户也可以使用Homebrew轻松安装CMake:
  1. brew install cmake
复制代码

验证安装

无论使用哪种方法安装CMake,都可以通过以下步骤验证安装是否成功:

1. 打开新的终端或命令提示符
2. 运行以下命令:
  1. cmake --version
复制代码

如果安装成功,你应该看到类似以下的输出:
  1. cmake version 3.25.1
  2. CMake suite maintained and supported by Kitware (kitware.com/cmake).
复制代码

1. 检查ccmake或cmake-gui是否可用(可选):
  1. ccmake --version  # Linux/macOS
  2. cmake-gui --version  # 所有平台,如果编译时包含了GUI
复制代码

CMake基本使用

现在CMake已经安装成功,让我们通过一个简单的例子来了解如何使用CMake构建一个C++项目。

创建示例项目

1. 创建一个项目目录结构:
  1. mkdir myproject
  2. cd myproject
  3. mkdir src
复制代码

1. 在src目录中创建一个简单的C++源文件main.cpp:
  1. #include <iostream>
  2. #include <cmath>
  3. int main() {
  4.     double x = 2.0;
  5.     double y = std::sqrt(x);
  6.     std::cout << "The square root of " << x << " is " << y << std::endl;
  7.     return 0;
  8. }
复制代码

1. 在项目根目录创建CMakeLists.txt文件:
  1. # 设置最低要求的CMake版本
  2. cmake_minimum_required(VERSION 3.10)
  3. # 设置项目名称
  4. project(MyProject)
  5. # 添加可执行文件
  6. add_executable(myapp src/main.cpp)
复制代码

使用CMake构建项目

1. 创建构建目录:
  1. mkdir build
  2. cd build
复制代码

1. 运行CMake配置项目:
  1. cmake ..
复制代码

1. 编译项目:
  1. cmake --build .
复制代码

1. 运行生成的可执行文件:

在Linux/macOS上:
  1. ./myapp
复制代码

在Windows上:
  1. Debug\myapp.exe
复制代码

预期输出:
  1. The square root of 2 is 1.41421
复制代码

更复杂的CMake示例

让我们创建一个稍微复杂一点的例子,包含多个源文件和库:

1. 创建以下目录结构:
  1. myproject/
  2. ├── include/
  3. │   └── math_functions.h
  4. ├── src/
  5. │   ├── math_functions.cpp
  6. │   └── main.cpp
  7. └── CMakeLists.txt
复制代码

1. 在include/math_functions.h中添加:
  1. #ifndef MATH_FUNCTIONS_H
  2. #define MATH_FUNCTIONS_H
  3. namespace mymath {
  4.     double square(double x);
  5.     double cube(double x);
  6. }
  7. #endif
复制代码

1. 在src/math_functions.cpp中添加:
  1. #include "math_functions.h"
  2. #include <cmath>
  3. namespace mymath {
  4.     double square(double x) {
  5.         return x * x;
  6.     }
  7.    
  8.     double cube(double x) {
  9.         return x * x * x;
  10.     }
  11. }
复制代码

1. 在src/main.cpp中添加:
  1. #include <iostream>
  2. #include "math_functions.h"
  3. int main() {
  4.     double x = 2.0;
  5.     std::cout << "x = " << x << std::endl;
  6.     std::cout << "x^2 = " << mymath::square(x) << std::endl;
  7.     std::cout << "x^3 = " << mymath::cube(x) << std::endl;
  8.     return 0;
  9. }
复制代码

1. 在项目根目录的CMakeLists.txt中添加:
  1. # 设置最低要求的CMake版本
  2. cmake_minimum_required(VERSION 3.10)
  3. # 设置项目名称
  4. project(MyProject)
  5. # 添加包含目录
  6. include_directories(${PROJECT_SOURCE_DIR}/include)
  7. # 创建库
  8. add_library(mymath src/math_functions.cpp)
  9. # 添加可执行文件
  10. add_executable(myapp src/main.cpp)
  11. # 链接库
  12. target_link_libraries(myapp mymath)
复制代码

1. 构建并运行项目:
  1. mkdir build
  2. cd build
  3. cmake ..
  4. cmake --build .
  5. ./myapp  # Linux/macOS
复制代码

预期输出:
  1. x = 2
  2. x^2 = 4
  3. x^3 = 8
复制代码

常见问题与解决方案

问题1:CMake配置时找不到编译器

症状:运行cmake ..时出现错误,提示找不到C或C++编译器。

解决方案:

• 在Windows上,确保Visual Studio或MinGW已正确安装,并且其路径已添加到系统PATH环境变量中。
• 在Linux上,安装build-essential或对应的开发工具包:
“`bashDebian/Ubuntusudo apt-get install build-essential

在Windows上,确保Visual Studio或MinGW已正确安装,并且其路径已添加到系统PATH环境变量中。

在Linux上,安装build-essential或对应的开发工具包:
“`bash

sudo apt-get install build-essential

# Fedora/CentOS
  sudo dnf groupinstall “Development Tools”
  1. - 在macOS上,安装Xcode命令行工具:
  2.   ```bash
  3.   xcode-select --install
复制代码

问题2:缺少必要的依赖库

症状:编译过程中出现错误,提示缺少某些头文件或库。

解决方案:

• 确定缺少的库的名称
• 在Linux上,使用包管理器安装对应的开发包:
“`bashDebian/Ubuntusudo apt-get install lib-dev

确定缺少的库的名称

在Linux上,使用包管理器安装对应的开发包:
“`bash

sudo apt-get install lib-dev

# Fedora/CentOS
  sudo dnf install-devel
  1. - 在Windows上,下载对应的库并手动配置路径
  2. - 在macOS上,可以使用Homebrew安装:
  3.   ```bash
  4.   brew install <library-name>
复制代码

问题3:CMake版本过低

症状:使用某些CMake特性时出现错误,提示CMake版本过低。

解决方案:

• 升级CMake到较新版本
• 如果系统包管理器提供的CMake版本过旧,可以从源码编译安装最新版本(如本文所述)
• 或者,修改CMakeLists.txt中的cmake_minimum_required为较低版本,但可能无法使用某些新特性

问题4:在Windows上生成Visual Studio项目失败

症状:尝试生成Visual Studio项目时出现错误。

解决方案:

• 确保已安装正确版本的Visual Studio
• 使用正确的生成器名称:Visual Studio 2017: “Visual Studio 15 2017”Visual Studio 2019: “Visual Studio 16 2019”Visual Studio 2022: “Visual Studio 17 2022”
• Visual Studio 2017: “Visual Studio 15 2017”
• Visual Studio 2019: “Visual Studio 16 2019”
• Visual Studio 2022: “Visual Studio 17 2022”
• 如果需要64位构建,添加-A x64参数:cmake .. -G "Visual Studio 16 2019" -A x64

• Visual Studio 2017: “Visual Studio 15 2017”
• Visual Studio 2019: “Visual Studio 16 2019”
• Visual Studio 2022: “Visual Studio 17 2022”
  1. cmake .. -G "Visual Studio 16 2019" -A x64
复制代码

问题5:安装后无法找到cmake命令

症状:安装完成后,运行cmake --version提示命令未找到。

解决方案:

• 确保CMake的bin目录已添加到PATH环境变量中
• 在Linux/macOS上,如果安装到/usr/local,通常不需要额外配置
• 在Windows上,手动添加CMake的bin目录到系统PATH环境变量
• 如果使用自定义安装路径,确保该路径下的bin目录在PATH中

总结与展望

通过本文的详细介绍,我们了解了如何从源码下载、编译和安装CMake这一强大的跨平台构建自动化工具。我们涵盖了Windows、Linux和macOS三大主流平台的安装方法,并通过实际示例展示了CMake的基本使用方法。

CMake作为现代C++项目的事实标准构建系统,其重要性不言而喻。掌握CMake的使用对于任何C++开发者来说都是一项宝贵的技能。从简单的单文件项目到复杂的大型软件系统,CMake都能提供灵活、高效的构建解决方案。

展望未来,CMake仍在不断发展和改进。新版本中引入的更多现代CMake特性,如target_compile_features、FetchContent等,使得CMake的使用变得更加简单和直观。同时,CMake对其他语言的支持也在不断增强,使其成为一个更加通用的构建工具。

希望本文能够帮助读者成功部署CMake,并在日常开发中充分利用其强大功能。随着对CMake的深入了解,你将能够构建更加复杂和高效的项目构建系统,为软件开发流程带来极大的便利。

现在,你已经掌握了CMake的安装和基本使用方法,可以开始探索更多高级特性,如自定义模块、交叉编译、测试和打包等,进一步提升你的CMake技能。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则