一、简介
CMake是一个用于管理源代码构建的工具。CMake广泛应用于C和C++语言。详细信息请登录官网https://cmake.org 了解。
二、准备工作
2.1 安装编译器
下载网址 WinLibs - GCC+MinGW-w64 compiler for Windows
下载完成后将mingw64放到硬盘上的某个位置,例如D:\mingw64,然后把D:\mingw64 添加到系统的PATH变量中。
2.2 安装CMake
下载网址 Download CMake
可以直接下载安装程序,省事
也可以下载ZIP文件并解压到硬盘里,例如D:\cmake-3.29.3-windows-x86_64,然后把D:\cmake-3.29.3-windows-x86_64\bin添加到系统的PATH变量里。
三、CMake常用命令
3.1 设置project名称
project(xxx)
会自动创建两个变量,PROJECT_SOURCE_DIR
和 PROJECT_NAME
${PROJECT_SOURCE_DIR}
: 本CMakeLists.txt所在的目录路径
${PROJECT_NAME}
: 本 CMakeLists.txt的project名称
3.2 获取路径下的所有.cpp/.c/.cc文件,并赋值给变量中
aux_source_directory(
路径 变量名
)
3.3 给文件名/路径名或者其他字符串起别名,用${
变量
}
获取变量内容
set(
变量 文件名
/
路径
/…)
3.4 添加编译选项
add_definitions(
编译选项
)
3.5打印消息
message(
消息
)
3.6 编译子目录的CMakeLists.txt
add_subdirectory(
子目录名称
)
3.7
将.cpp/.c/.cc文件生成.a静态库
注意,此时库文件名称通常为libxxx.so,在这里只需要写xxx即可add_library(
库文件名称如
xxx STATIC
文件
)
3.8将.cpp/.c/.cc文件生成可执行文件
add_executable(
可执行文件名称 文件
)
3.9规定.h头文件路径
include_directories(
路径
)
3.10规定.so/.a库文件路径
link_directories(
路径
)
3.11对add_library或者add_executable生成的文件进行链接操作
注意,此时库文件名称通常为libxxx.so,在这里只需要写xxx即可target_link_libraries(
库文件名称
/
可执行文件名称 链接的库文件名称
)
四、CMakeLists文件基本命令
project(xxx) # 必须,指定项目名称
add_subdirectory(子目录名称) # 父目录必须,子目录没有下级子目录则不需要
add_library(库文件名称 STATIC 文件) # 通常子目录(二选一)
add_executable(可执行文件名称 文件) # 通常父目录(二选一)
include_directories(路径) #
link_directories(路径) #
target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称) #
五、CMake编译的主要步骤
5.1 新建一个练习目录
例如 D:\CmakeTest,在该目录下新建Test1目录
5.2 在Test1目录下新建CMakeLists.txt文件
cmake_minimum_required(VERSION 3.10)
project(Test1) # 指定项目名称为Test1
add_executable(Test1 main.cpp) # 可执行文件名称为Test1
5.3
打开
CMD
命令窗口,并定位到
d:\CmakeTest\Test1
目录
5.4
配置并构建系统
方式一、直接在Test1目录里进行
cmake -S . -B ./build -G “MinGW Makefiles”
方式二、建立Build目录,并在该目录里进行
也可以直接在Test1目录里直接建立Build目录
mkdir build
cd build
cmake ..
5.5 编译链接项目
方式一、直接在Test1目录里进行
cmake --build ./build
方式二、在Build目录里进行
cmake --build
5.6 运行测试程序
如果一切正常的话会在Build目录里生成一个名为Test1.exe文件,双击运行即可。
六、示例
可以从官网上下载示例文件,先打开https://cmake.org/cmake/help/latest/guide/tutorial/index.html#guide:CMake Tutorial 网址,在文档的该文字处The tutorial source code examples are available in this archive
. ,点击this archive即可下载示例文档。
6.1 第一个示例
1.main.cxx文件
#include <iostream>
int main()
{
std::cout << "This is my first demo." << std::endl;
return 0;
}
2. CmakeLists.txt文件
cmake_minimum_required(VERSION 3.10)
project(Test1)
add_executable(Test1 main.cxx)
3. 操作步骤
cmake -S . -B ./build -G "MinGW Makefiles"
cmake --build ./build
cd build
test1
运行结果显示为: This is my first demo.