【CMake指南】第1篇:CMake入门基础

1. 什么是CMake?

CMake是一个跨平台的自动化构建工具,用于管理C/C++项目的编译过程。它通过简单的配置文件(CMakeLists.txt)生成不同平台(如Windows的Visual Studio、Linux的Makefile、macOS的Xcode)所需的构建文件,解决手动编写Makefile或维护多平台项目的痛点。

为什么选择CMake?

  • 跨平台支持:一套配置,多平台编译。
  • 简洁高效:语法清晰,支持模块化配置。
  • 生态强大:兼容CTest、CPack等工具链。

2. 安装CMake

Windows

  1. 下载安装包:访问 CMake官网 下载Windows版本的.msi安装包。
  2. 安装时勾选 ​​“Add CMake to the system PATH”​,确保命令行可用。

验证安装:

cmake --version  # 应输出CMake 的版本

3. 第一个CMake项目:Hello World

项目结构

创建一个空文件夹hello_cmake,包含两个文件:

hello_cmake/
  ├── CMakeLists.txt  # CMake配置文件
  └── main.cpp        # 源代码

编写代码

main.cpp

#include <iostream>

int main() {
    std::cout << "Hello CMake!" << std::endl;
    return 0;
}

编写CMakeLists.txt

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)  # 指定CMake最低版本
project(HelloCMake)                  # 定义项目名称

# 添加可执行文件:将main.cpp编译为hello_cmake
add_executable(hello_cmake main.cpp)

4. 解析CMakeLists.txt

关键命令说明

  1. cmake_minimum_required
    指定CMake的最低版本要求,避免兼容性问题。

  2. project(ProjectName)
    定义项目名称,同时隐式设置变量PROJECT_NAME和CMAKE_PROJECT_NAME。

  3. add_executable(TargetName SourceFiles)
    告诉CMake如何将源代码(如.cpp)编译为可执行文件。
    argetName:生成的可执行文件名(如hello_cmake)。
    SourceFiles:源文件列表(如main.cpp)。


5. 构建与运行

生成构建系统

在项目根目录下执行:

# 创建并进入build目录(推荐隔离构建文件)
mkdir build
cd build

# 生成构建系统(假设使用默认的Makefile)
cmake ..
  • cmake .. 会根据上一级目录的CMakeLists.txt生成构建文件。
  • 生成的中间文件(如Makefile)会保存在build目录中。

编译项目

# Windows(若生成的是Visual Studio工程,需用MSBuild)
cmake --build .  # 跨平台编译命令

运行程序

# Windows
.\Debug\hello_cmake.exe

输出结果:

Hello CMake!

6. 总结与下一步

  • 核心流程:编写CMakeLists.txt → 生成构建系统 → 编译 → 运行。
  • 关键命令project(), add_executable()
  • 最佳实践:始终在build目录中构建项目,避免污染源码。

常见问题

  1. **​​“No such file or directory”**错误
    检查CMakeLists.txt中源文件路径是否正确。
  2. 缓存问题
    删除build目录重新生成(rm -rf build)。
  3. ​CMake版本过低
    升级CMake或调整cmake_minimum_required版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JuicyActiveGilbert

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

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

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

打赏作者

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

抵扣说明:

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

余额充值