CMake

Makefile

CMake

官方文档

CMake是一款跨平台编译系统生成器。例如可在Linux上生成Makefile,在Windows上生成Visual Studio工程等。目前也支持NinjaXcode
CMake通常用于C/C++文件的编译,同时也支持其他语言。

CMake提供三种工具:

  • CMake 生成编译系统。
  • CTest 用于生成测试,反馈测试结果。
  • CPack 打包程序,用于产生安装文件。

使用CMake需要有如下部分。
SourceTree 包含项目需要的Src文件。这个项目的编译系统和依赖项由CMake定义,CMake的入口文件为顶层的CMakeLists.txt文件。
BuildTree 包含项目生成的输出文件。CMake将生成一个CMakeCache.txt文件

CMake 命令行用法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 生成编译系统
cmake [<options>] <path-to-source>
cmake [<options>] <path-to-existing-build>
cmake [<options>] -S <path-to-source> -B <path-to-build>

# Build a Project
cmake --build <dir> [<options>] [-- <build-tool-options>]

# Install a Project
cmake --install <dir> [<options>]

# Open a Project
cmake --open <dir>

# Run a Script
cmake [{-D <var>=<value>}...] -P <cmake-script-file>

# Run a Command-Line Tool
cmake -E <command> [<options>]

# Run the Find-Package Tool
cmake --find-package [<options>]

# View Help
cmake --help[-<topic>]

CMakeLists.txt语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 设置最低版本
cmake_minimum_required(VERSION 3.4.1)

# 打印信息
MESSAGE(STATUS, "Content")


# 设置项目标题
PROJECT(demo)

# 设置头文件路径
INCLUDE_DIRECTORIES(
include
)

# 设置源文件路径
AUX_SOURCE_DIRECTORY(src DIR_SRCS)

# 设置环境变量
SET(demo
${DIR_SRCS}
)

# 添加依赖库
TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)



# 生成的文件
add_executable(demo demo.cpp) # 生成可执行文件
add_library(../bin/bin STATIC util.cpp) # 生成静态库
add_library(../bin/bin SHARED util.cpp) # 生成动态库或共享库



Make Install

./configure、make、make install 命令
1、./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
2、make 是用来编译的,它从Makefile中读取指令,然后编译。
3、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。