提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
Makefile及CMake知识点的整理,重点是CMake的整理,对于大型的项目构建比较多。
一、Makefile知识点的整理
1.1 Makefile的三要素
三要素分别为目标 依赖 命令
话不多说,上图比较清晰。
1.2 Makefile的工作原理
- 生成目标的原理。相当于是一个逻辑判断依赖条件是否存在,然后不断递归新的规则的过程。
- 更新目标的原理。可以理解为根据依赖条件修改的时间戳而执行命令的过程。
1.3 .PHONY伪对象
用于在程序所在目录创建一个clean文件,避免本地产生文件的影响。如clean文件
1.4 变量
通过变量能够实现类似对Makefile宏的定义。
1.4.1 自动变量
◼
@
用于表示一个规则中的
∗
∗
目标
∗
∗
。当我们的一个规则中有多个目标时,
@用于表示一个规则中的**目标**。当我们的一个规则中有多个目标时,
@用于表示一个规则中的∗∗目标∗∗。当我们的一个规则中有多个目标时,@所指的是其中任何造成命令被运行的目标。
◼ $^则表示的是规则中的所有依赖。
◼ $<表示的是规则中的第一个依赖。
1.4.2 自动变量——编译
wildcard 是通配符函数,通过它可以得到我们所需的文件。形式:$(wildcard pattern);
patsubst 函数是用来进行字符串替换的,其形式是:
$(patsubst pattern, replacement, text);
二、CMake
1.编译方式
设置CMakeLists.txt的目录位置,通过cmake命令,一般通过创建build目录设置cmake命令,因为在工程目录设置会产生大量中间的工程文件。
2.相关语法总结
cmake_minimum_required:设置cmake最低版本号的要求;
SET:设置变量;
MESSAGE:类似于linux中的echo;
ADD_EXECUTABLE:生成可执行文件;
INSTALL:安装相应文件到系统目录/usr/local;
ADD_SUBDIRECTORY:添加子目录,并且自动扫描子目录下的CMakeLists.txt文件;
ADD_LIBRARY:生成库文件;
TARGET_LINK_LIBRARIES:链接库到执行文件上;
AUX_SOURCE_DIRECTORY:找到目录下所有的源文件;
一些CMakeLists.txt文件的写法,深入的话需要通过阅读大型项目的文件理解。