CMake 是一种跨平台的构建工具,用于管理软件项目的构建流程。它通过使用配置文件(CMakeLists.txt)来生成适合特定平台的原生构建系统文件,如 Makefile(Linux)或 Visual Studio 工程文件(Windows)。
CMake 的目标是让开发者在不同的操作系统和编译器之间轻松地构建、测试和打包软件项目。
¶CMake 简介
CMake 是一种跨平台的构建工具,用于管理软件项目的构建流程。它通过使用配置文件(CMakeLists.txt)来生成适合特定平台的原生构建系统文件,如 Makefile(Linux)或 Visual Studio 工程文件(Windows)。
CMake 的目标是让开发者在不同的操作系统和编译器之间轻松地构建、测试和打包软件项目。
¶CMake 的主要特点
-
跨平台支持:支持 Windows、Linux、macOS,以及嵌入式系统开发。
-
生成原生构建文件:通过
CMakeLists.txt,生成适合平台的构建系统文件。 -
模块化管理:支持分模块编译和依赖关系管理。
-
灵活的配置:支持多种构建选项(如 Debug/Release)。
-
集成测试工具:可以通过 CTest 实现测试自动化。
-
广泛支持的工具链:支持多种编译器(GCC、Clang、MSVC 等)和工具链(Ninja 等)。
¶CMake 的基本使用流程
-
安装 CMake:在系统中安装 CMake,可通过包管理工具(如 apt、yum、brew)或官网下载安装包。
-
创建 CMakeLists.txt:编写一个
CMakeLists.txt文件,描述项目的构建流程。 -
运行 CMake:使用
cmake命令生成构建系统文件(如 Makefile)。1
cmake -S . -B build
-
构建项目:使用生成的构建文件进行编译。
1
cmake --build build
¶一个简单的 CMake 示例
假设有以下项目结构:
1 | project/ |
¶1. 编写 main.cpp
1 |
|
¶2. 编写 CMakeLists.txt
1 | # 指定 CMake 的最低版本 |
¶3. 构建项目
在项目根目录执行以下命令:
1 | # 生成构建系统文件 |
运行生成的可执行文件:
1 | ./build/hello |
¶CMake 的核心命令
-
project:定义项目名称及支持的语言。1
project(MyProject LANGUAGES CXX)
-
add_executable:添加可执行文件。1
add_executable(my_program main.cpp)
-
add_library:添加库文件。1
add_library(my_library STATIC lib.cpp)
-
target_include_directories:指定头文件路径。1
target_include_directories(my_program PRIVATE include/)
-
target_link_libraries:链接库文件。1
target_link_libraries(my_program PRIVATE my_library)
¶CMake 的优势
-
自动化管理依赖关系:轻松管理第三方库和自定义模块。
-
适应性强:支持不同编译器和平台。
-
模块支持:自带许多模块(如查找库、设置编译选项)