CMake学习笔记
CMake学习笔记

CMake学习笔记

从零开始系统学习 CMake(超详细 + 逐行讲解 + 可直接运行)

我会用你最熟悉的项目结构,从最基础到进阶,一步步带你系统掌握 CMake。
全程不跳步、不晦涩、全部可实操


一、先固定你的项目结构(全程用这个)

MyProject/         # 项目根目录
├── include/       # 头文件 .h / .hpp
│   └── Math.h
├── src/           # 实现文件 .cpp
│   └── Math.cpp
├── main.cpp       # 主程序
└── CMakeLists.txt # CMake 配置文件(核心)

二、CMake 到底是什么?(一句话)

CMake 不是编译器,是「构建工具生成器」
你写 CMakeLists.txt → CMake 自动生成 Makefile → 执行 make 编译。

优点:

  • 跨平台(Windows/Linux/Mac 通用)
  • 自动找库、自动找头文件
  • 大型项目必备

三、CMake 基础入门(第 1 版 CMakeLists.txt)

目标:编译 main.cpp + src + include

# 1. 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.10)

# 2. 定义项目名称
project(MyMathApp)

# 3. 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)

# 4. 告诉 CMake 头文件在哪里
include_directories(include)

# 5. 指定要编译的源文件
add_executable(myapp
    main.cpp
    src/Math.cpp
)

逐行解释

  1. cmake_minimum_required:必须写在第一行
  2. project(名字):定义项目名,随便起
  3. set(CMAKE_CXX_STANDARD 11):用 C++11
  4. include_directories(include)关键! 告诉编译器去 include 找头文件
  5. add_executable(可执行文件名 源文件列表):最终生成 myapp

四、编译运行步骤(固定 4 步,永远不变)

# 1. 创建构建目录(外部构建,不污染源码)
mkdir build
cd build

# 2. 让 CMake 生成 Makefile
cmake ..

# 3. 真正编译
make

# 4. 运行
./myapp

五、CMake 进阶 1:自动搜索源文件(不用手动写)

cmake_minimum_required(VERSION 3.10)
project(MyMathApp)
set(CMAKE_CXX_STANDARD 11)

include_directories(include)

# 自动搜索 src 下所有 .cpp
file(GLOB SRC_FILES src/*.cpp)

# 自动搜索主文件
add_executable(myapp main.cpp ${SRC_FILES})

file(GLOB 变量 路径) 自动匹配文件,适合大型项目。


六、CMake 进阶 2:编译成库(非常重要)

企业项目不会直接编译所有文件,而是先编译成库,再链接库

步骤 1:生成静态库 .a

add_library(math_lib STATIC src/Math.cpp)
include_directories(include)

步骤 2:主程序链接库

add_executable(myapp main.cpp)
target_link_libraries(myapp math_lib)

完整版

cmake_minimum_required(VERSION 3.10)
project(MyMathApp)
set(CMAKE_CXX_STANDARD 11)

include_directories(include)

# 编译库
add_library(math_lib STATIC src/Math.cpp)

# 编译主程序
add_executable(myapp main.cpp)

# 链接库
target_link_libraries(myapp math_lib)

七、CMake 进阶 3:指定输出路径(可执行文件放 bin)

想让编译后的程序自动放到 bin 目录?

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

加在 CMakeLists.txt 里即可。


八、CMake 进阶 4:添加编译选项(警告、优化)

# 开启所有警告
add_compile_options(-Wall)

# 调试模式
add_compile_options(-g)

# O2 优化
add_compile_options(-O2)

九、CMake 最常用 10 个指令(必须背)

1. cmake_minimum_required   # CMake 最低版本
2. project                 # 项目名
3. set                     # 设置变量
4. include_directories      # 头文件路径
5. file(GLOB)              # 自动找源文件
6. add_executable          # 生成可执行文件
7. add_library             # 生成库
8. target_link_libraries    # 链接库
9. add_compile_options      # 编译选项
10. aux_source_directory    # 自动加载目录下所有源文件

十、完整企业级 CMakeLists.txt(最终版)

cmake_minimum_required(VERSION 3.10)
project(MyProject)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

add_compile_options(-Wall -g -O2)

include_directories(include)

file(GLOB SRC src/*.cpp)
add_library(my_lib STATIC ${SRC})

add_executable(myapp main.cpp)
target_link_libraries(myapp my_lib)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注