CMake 命令⾏⼯具介绍

CMake ⼯程构建流程图

在这里插入图片描述

块# 1. 创建构建⽬录并进⼊
mkdir build && cd build
# 2. 配置项⽬
cmake ..
# 3. 构建项⽬
make
或者
cmake --build .
# 4. 执⾏测试(如果有)
make test
或者
ctest .
# 5. 安装项⽬
make install
或者
cmake --install .
# 6. ⽣成安装包
make package
或者
cpack
# 7 解压 ⽣成的tar 包
tar xvf TestCMakeTools-0.1.1-Linux.tar.gz

Step 0:⽬录结构

tree cmake_tools
├── build
├── CMakeLists.txt
├── main.cpp
└── test.cpp

Step 1:新建⽂件-main.cpp

#include <iostream>
int main()
{
    std::cout << "hello world!" << std::endl;
	return 0;
}

Step 2:新建⽂件-test.cpp

#include <iostream>
#include <cassert>
int main()
{
assert( 1 + 2 == 3);
std::cout << "test passed!" << std::endl;
return 0;
}

Step 3:修改⽂件-CMakeLists.txt

# 1 设置能运⾏此cmake ⼯程的最低cmake版本要求
cmake_minimum_required(VERSION 3.18)
# 2 设置项⽬名称
project(helloWorld)
# 3 添加构建⽬标
# g++ main.cpp -o main
add_executable(main main.cpp)
#⽣成测试⼆进制可执⾏程序
add_executable(testAdd test.cpp)
# 4 开启测试功能 & 集成测试逻辑
include(CTest)
add_test(
NAME Case_Add
COMMAND testAdd
)
# 5 安装⼆进制可执⾏程序到本地
include(GNUInstallDirs)
install(TARGETS main)
# 6 开启打包功能 & 打包⼆进制可执⾏程序
include(CPack)

⽣成构建系统

通过 cmake 可以看到cmake命令⽀持的详细参数,常⽤的参数如下:

cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
cmake [options] -S <path-to-source> -B <path-to-build>

在这里插入图片描述

源⽂件⽬录 ⽤-S 选项指定

在 CMake 中,源⽂件树(Source Tree) 指的是项⽬源代码的⽬录结构,CMake 通过CMakeLists.txt ⽂件来组织和管理这个结构。通常使⽤顶层CMakeLists.txt 来标识。

构建⽬录 ⽤ -B 选项指定

在 CMake 中,构建树(Build Tree) 是指项⽬构建过程中⽣成的临时⽂件⽬录,它与源⽂件树(Source Tree) 相对应。构建树包含编译过程中⽣成的中间⽂件(如⽬标⽂件、依赖信息)和最终产物(如可执⾏⽂件、库⽂件)。通常使⽤CMakeCache.txt来标识。构建时,根据构建中间⽂件是独⽴保存还是放在当前源代码⽬录下, 构建过程分为以下2种:

源内构建:

在源代码树包含的顶级CMakeLists.txt的⽬录下进⾏直接构建。

cmake .

源外构建:

使⽤ -B 参数单独指定⼀个build ⽬录,然后在⼦⽬录⾥制定源⽂件⽬录也就是包含CMakeLists.txt的⽬录:

cd build && cmake ../ 隐含 ./为构建⽬录 ../ 为源⽂件⽬录

为了维护⼀个纯净的源⽂件树,可通过使⽤⼀个单独⽬录来进⾏源外构建,也⽀持在源代码⽬录下进⾏构建,但不建议这样做。

安装树 install

⽤于正式存放项⽬⽣成的⼆进制程序,静态库,动态库等产物,以便于其他应⽤程序引⽤。GNUInstallDirs ⾥定义个各个系统下的默认安装路径。linux下默认为

prefix = /usr/local
CMAKE_INSTALL_PREFIX=${prefix}

编译链接

cmake --build <dir> = Build a CMake-generated project binary
tree.

⽣成构建⽂件以后,就可以使⽤cmake 来编译链接,也可以使⽤第三⽅构建系统进⾏。因为⽣成的makefile就在构建树的根⽬录下,所以可以直接在此⽬录运⾏make.

cmake --build ./
或者
make

测试

正常我们在编写功能代码之后,也会编写对应的单元测试代码,然后使⽤ctest 来调⽤我们的单元测试。

Usage
ctest [options]

如果cmake的配置⽂件CMakeLists.txt⾥包含CTest功能,则⽣成的makefile⾥也会包含test 伪⽬标,可以使⽤make 来执⾏。

ctest
或者
make test
Test project /home/bit/workspace/CMakeClass/cmake_tools/build
Start 1: testAdd
1/1 Test #1: testAdd .......................... Passed 0.00 sec
100% tests passed, 0 tests failed out of 1
Total Test time (real) = 0.00 sec

安装

cmake --install <dir> = Install a CMake-generated project binary

在单元测试通过之后,我们可以使⽤cmake的 安装命令把库和⼆进制发布到本机的标准路径,供⼤家⼀起开发使⽤。如果cmake的配置⽂件CMakeLists.txt⾥包含install函数,则⽣成的makefile⾥也会包含install 伪⽬标,可以使⽤make 来执⾏。

cmake --install .
或者
make install
[100%] Built target main
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/main
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐