cmake基本使用

cmake基本使用

1.cmake是什么?

cmake是一种项目构建工具,在cmake出现之前我们一般使用make进行项目构建,但是makefile编写比较复杂,因此cmake应运而生,使用cmake只需要编写简单的CMakeLists.txt,cmake会根据CMakeLists.txt生成对应的makefile。

2.cmake的安装和配置

1.cmake安装

1
sudo apt install cmake #基于ubuntu/debian

2.cmake配置

cmake使用一般要设定两个环境变量,如果工程使用的包含文件或者库文件放在非默认路径下,则需要使用设置该环境变量来弥补

1
2
export CMAKE_INCLUDE_PATH=/usr/include
export CMAKE_LIBRARY_PATH=/usr/lib

3.CMakeLists.txt的编写规则

脚本关键字一般使用大写,当然使用小写也是可以的

1.CMAKE_MINIMUM_REQUIRED
1
2
3
4
CMAKE_MINIMUM_REQUIRED(VERSION ${VERSION})
#用于指定该cmake脚本兼容的最低cmake版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
#这里表明cmake兼容的最低版本为3.12

2.PROJECT

1
2
3
4
PROJECT(project_name ${program_language})
#指定该项目的名称和该项目支持的变成语言
PROJECT(shadowsocks-libev C )
#这里指定项目名称为shadowsocks-libev,支持的变成语言为C,如果不指定此项默认支持所有变成语言

3.INCLUDE_DIRECTORY

1
2
3
4
INCLUDE_DIRECTORIES(${PATH})
#指定包含头文件的包含路径
INCLUDE_DIRECTORIES(/usr/include)
#指定项目头文件的包含路径为/usr/include
1
2
3
4
LINK_DIRECTORIES(${PATH})
#指定链接库的路径
LINK_DIRECTORIES(/usr/lib)
#指定链接库的路径为/usr/lib

5.SET

1
2
3
4
5
6
7
8
9
10
11
SET(PARAM VALUE)
#设置变量
SET(EXECUTABLE bin)
#这里设定变量EXECUTABLE为bin
#SET选项一般设置一些关键的环境变量,例如,输出的可执行程序的输出路径,包含文件的查找路径,包含库文件的查找路径

#常用的关键变量
LIBRARY_OUTPUT_PATH #生成的库文件的生成目录
EXECUTABLE_OUTPUT_PATH #生成的可执行文件的生成目录
CMAKE_C_COMPILER #指定cmake使用什么编译器进行编译项目
CMAKE_CXX_COMPILER #指定cmake使用什么c++编译器进行编译项目

6.ADD_LIBRARY

1
2
3
4
5
ADD_LIBRARY(<name> STATIC/SHARED/MODULE <source>)
#指定源代码路径以及生成的库的类型和名称
#<name>为指定生成库的名称
#STATIC/SHARED 指定生成静态或者动态库
#<source>指定源代码的路径

7.AUX_SOURCE_DIRECTORY

1
2
AUX_SOURCE_DIRECTORY(src SOURCE_DIR)
#扫描一个目录的文件并将该目录的文件定义成一个变量

8.其他常用的关键字

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
TARGET_LINK_DIRECTORIES
TARGET_LINK_DIRECTORIES(/usr/lib)
#指定目标文件链接的库路径

TARGET_INCLUDE_DIRECTORIES
TARGET_INCLUDED_DIRECTORIES(/usr/include)
#指定生成的目标文件链接的头文件目录

MESSAGE
MESSAGE(type"${message}")
type
1.STATUS 非重要信息
2.WARNING 警告信息,会继续执行
3.AUTHOR_WARNING 警告信息(dev),会继续执行
4.SEND_ERROR 错误,继续执行,但是会跳过生辰步骤
5.FATAL_ERROR 错误,终止所有处理过程
#输出打印信息,如果不指定type则默认STATUS类型
MESSAGE(FATAL_ERROR "FATAL error")
#输出信息错误FATAL error,并且终止cmake执行

OPTION(WITH_STATIC "build with static libraries" ON)
#给用户一个选择,如果用户在编译的时候没有进行传参则使用默认值

SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello")
#设置hello_static库文件输出文件名为hello

4.cmake使用方法

在构建cmake项目的时候我们一般会在项目的根目录建立一个build目录,然后将生成的目标文件以及中间文件生成在build目录下

1
2
3
cd $PROJECT && mkdir build && cd build && cmake .. && make
#如果希望传递一些变量给cmake进行控制一些参数
cmake -DCMAKE_C_COMPILER=clang

cmake基本使用
https://dreamaccount.github.io/2023/02/07/cmake基本使用/
作者
404NotFound
发布于
2023年2月7日
许可协议