CMake

CMake是一门为C++服务的语言,即 CMake Language

CMake和Vcpkg的集成

0 CMake安装

Download CMake

Windows 下载MSI安装包,安装即可

1 CMake 项目流程

CMakeLists.txt详解

1.1 创建Cpp源码文件

hello.cpp

1
2
3
4
5
6
#include <iostream>

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

1.2 创建CMake配置文件

CMakeLists.txt

1
2
3
4
5
6
7
8
#这三项包含了配置文件最基本的信息
#支持的cmake最小版本
#项目昵称
#添加可执行文件

cmake_minimum_required(VERSION 3.20)
project(Hello)
add_executable(Hello hello.cpp)

1.3 指定CMake项目生成目录

1
2
3
cmake -B build

#注-可以通过cmake -G 来指定C++解释器

1.4 生成二进制可执行文件

1
cmake --build build

此时,若是Windows系统,则./build/Debug文件夹下就生成了可执行文件hello.exe

1.5 CMakeLists.txt详解

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 寻找第三方库,REQUIRED参数 表示 该库是必须的
find_package(pkg_name REQUIRED)

# 链接第三方库
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE pkg_name)

# 打开C++标准支持,这里是C++17
target_compile_features(${CMAKE_PROJECT_NAME}) PRIVATE cxx_std_17

# 将<项目根目录>/assets 拷贝到 <项目根目录>/build/Debug/assets
add_custom_commad(
	TARGET ${CMAKE_PROJECT_NAME}
	POST_BUILD
	COMMAND ${CMAKE_COMMAND} -E copy_directory
		"${PROJECT_SOURCE_DIR}/assets"
		"$<TARGET_FILE_DIR:${CMAKE_PROJECT_NAME}>/assets")

2 CMake 程序的执行

2.1 cmake的命令行工具

  • cmake
  • ctest
  • cpack
  • cmake-gui
  • ccmake

2.2 如何不使用CMakeLists.txt运行CMake

创建.cmake文件

1
touch first.cmake

first.cmake

1
message("hello")

执行.cmake文件语法 - cmake -P <file_name>

1
2
3
cmake -P first.cmake

>>>输出hello

2.3 打印 - message("")

1
2
3
4
5
6
7
#单行打印
message("hello")
message(hello)

#多行打印
message("first line
second line")

2.4 获取信息 - $

1
2
#使用${}指定变量
message(${CMAKE_VERSION})

3 CMake 语言语法

3.1 变量操作

set()

1
2
3
4
5
6
7
8
#方式1 - 设置单个值
set(var1 hello)
message(${var1})

#方式2 - 设置多个值 列表
set(var2 a1 a2) # 等效于set(var2 a1;a2)
#cmake的列表间元素用;分割,但是打印时不显示;
message(${var2})

$

1
2
3
4
5
6
#可以使用${}打印系统环境变量
message($ENV{PATH})

#作用域为该项目
set(ENV{ABC} "ENV-Test")
message($ENV{ABC})

unset()

1
2
3
4
5
6
set(ENV{ABC} "ENV-Test")
message($ENV{ABC})
unset(ENV{ABC})

#unset后 该变量就被移除 打印时会报错
#message($ENV{ABC})