CMake

CMake是一个跨平台的C++构建工具,它可以根据平台不同生成不同的构建脚本。

CMake的简单使用

CMake的最简单粗暴的使用方法,仅限于Windows。

下载CMake软件后,创建文件夹作为一个项目。

在文件夹中新建CMakeLists.txt文件。

CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cmake_minimum_required(VERSION 3.5)#最低CMake版本

project (projectname)# 工程名

#添加源文件
aux_source_directory(${CMAKE_SOURCE_DIR} MAIN_FUNC_SRCS)#源文件目录(相对路径)


#添加.h文件
include_directories(${CMAKE_SOURCE_DIR})#.h文件目录(相对路径)


#指定生成目标
add_executable(${PROJECT_NAME} ${MAIN_FUNC_SRCS})
生成的可执行文件名 所有的源文件

CMake命令

1
mkdir build
1
cd build
1
cmake ..
1
make

文件目录理想结构

1
2
3
4
5
6
7
└── ttms
├── config
│ └── config
├── src
│ ├── include
│ └── main.cpp
└── CMakeLists.txt

CMake较理想结构

CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cmake_minimum_required(VERSION 3.20.2)
project(SunProject)

set(CMAKE_CXX_STANDARD 14)

add_library(${PROJECT_NAME}-lib

)

add_definitions(

)

target_include_directories(${PROJECT_NAME}-lib PUBLIC src)

add_executable(${PROJECT_NAME}-exe src/main.cpp)

target_link_libraries(${PROJECT_NAME}-exe PRIVATE ${PROJECT_NAME}-lib)

add_definitions( )

变量名需要以D开头,变量在代码中作为宏定义出现

CMake文件:

CMakeLists.txt
1
2
3
add_definitions(
-DCONFIG_FILE="${CMAKE_CURRENT_SOURCE_DIR}/config"
)

cpp文件:

1
std::ifstream conf(CONFIG_FILE"/config");

CMake说明网站

CMake菜谱

GitBook

CMake 3.21 (中文)