CMake 构建工具

导航
返回开发工具分类

CMake是一个跨平台的构建系统生成工具,常用于C和C++项目,可以为不同平台生成相应的构建文件。

CMake的简单使用

下面是一个简单的CMake用法,Windows、Linux和macOS都可以使用;需要先安装对应的编译器和构建工具。

下载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
cmake --build . --config Release

cmake --build会调用当前生成器对应的构建工具;只有生成Makefile时才直接使用make。参见CMake命令行文档。

文件目录理想结构

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

CMake较理想结构

下面是结构模板:必须在add_library中填入实际库源文件,或后续用target_sources补充;不能把空库模板直接用于构建。如果只有src/main.cpp,直接用add_executable即可。

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是编译器的宏定义选项前缀,不是宏名称的一部分;下面定义的宏名是CONFIG_FILE。

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 (中文)