CMake 简介:它是什么以及为什么需要它
CMake(跨平台构建系统)是一个强大的开源跨平台软件自动化构建系统。与传统的 Makefile 不同,CMake 不直接构建项目,而是基于简单的配置文件 CMakeLists.txt 为本机工具(Make、Ninja、Visual Studio、Xcode)生成构建文件。
为什么需要 CMake?
- 跨平台性: 同一份代码无需修改配置即可在 Windows、Linux 和 macOS 上构建。
- 依赖管理: 内置支持查找和链接外部库(Boost、OpenCV、Qt 等)。
- 灵活性: 支持多种项目生成器(Visual Studio、Xcode、Ninja、Unix Makefiles)。
- 模块化: 能够创建库(静态和动态)、可执行文件和测试。
- IDE 集成: 现代 IDE(CLion、VS Code、Qt Creator)内置了对 CMake 的支持。
CMake 已成为 C++ 项目的事实标准。像 Google(TensorFlow、Chrome)、Microsoft(VS Code)、KDE、LLVM/Clang 等巨头都在使用它。
安装 CMake
与 Python 库不同,CMake 不能通过 pip 安装。它是一个独立的应用程序。下面介绍主要操作系统的安装方法:
Windows
- 从 官方网站 下载安装程序(选择 Windows 版本 — .msi 或 .zip)。
- 运行安装程序。务必勾选 "Add CMake to the system PATH for all users" 选项。
- 安装后,在命令行中验证:
cmake --version。
Linux (Ubuntu/Debian)
sudo apt updatesudo apt install cmakecmake --versionmacOS (Homebrew)
brew install cmakecmake --version验证安装
安装后,在终端中执行:
cmake --version# 输出应类似于:# cmake version 3.27.0快速入门:第一个 CMake 项目
让我们创建一个简单的 "Hello World" 项目,使用 CMake 构建。
项目结构
my_project/├── CMakeLists.txt└── main.cppmain.cpp 文件
#include <iostream>
int main() { std::cout << "Hello, CMake!" << std::endl; return 0;}CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.10)project(HelloWorld VERSION 1.0 LANGUAGES CXX)
add_executable(hello main.cpp)构建项目
mkdir buildcd buildcmake ..cmake --build ../hello说明:
cmake_minimum_required— 设置 CMake 的最低版本。project— 定义项目名称和语言(CXX 代表 C++)。add_executable— 从源文件创建可执行文件。
CMake 的主要方法和函数
1. cmake_minimum_required()
描述: 设置构建项目所需的最低 CMake 版本。如果 CMake 版本低于指定版本,将报错。
参数:
VERSION— 版本号,格式为 major.minor[.patch[.tweak]]FATAL_ERROR— 可选,版本不匹配时触发致命错误
示例:
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)2. project()
描述: 定义项目名称及其参数。必须