目录
1.makefile的用法:
创建makefile:
vi Makefile
运行用make(一个路径下只能有一个Makefile)
在Makefile中,
命名规范:
目标文件1:依赖文件1
(Tab键)依赖文件1怎么生成目标文件1的(也就是用依赖文件生成目标文件的方法)
目标文件2:依赖文件2
(Tab键)依赖文件2怎么生成目标文件2的
注意:
(1)目标文件1和目标文件2没有关联的话,默认只执行目标文件1
(2)一个Makefile中可以有多个目标文件
(3)在调用make时,需要我们指定要运行的目标是什么,不然只运行目标文件1

上图中:mingling1中并没有和mingling2有联系,只执行mingling1
注意:直接echo不把echo当做命令,要在前边加@符号

上图中:命令从下往上输出
注意:在Makefile中,命令从下往上运行
2.假目标
假目标:就是在Makefile中有一个目标文件与创建Makefile路径的的某一个文件名字相同,会不执行Makefile中的目标文件
解决方法:在Makefile中的名字相同的目标文件前加.PHONY

3.预定义变量
CC:c编辑器的名称,默认为cc
CFLAGS :c编辑器的选项,无默认值
RM :文件删除默认选项,默认为rm -rf
4.自定义变量
OBJ 和 OBJS :一个用于存放可执行文件,一个存放所有的目标文件(.o文件)

5.自动变量
$@ :目标文件
$< :表示第一个依赖文件
$^ :表示所有的依赖文件

6.变量定义的两种方式
6.1 递归方式 (VAR=var)

用递归方式时,某一个值后面改变也会影响前边改变
上图中:a在后边变了,前边的b,c也随之改变
6.2 简单方式(VAR:=var)

上图中,用加了:的简单方式,后边值的改变对前边的不影响
7.嵌套Makefile
(1)创建文件夹:
include 放.h文件
src 放.c文件
obj 放.c文件生成的.o文件
bin 放.o文件生成的可执行文件
(2)编写总控Makefile,先书写自定义变量和预定义变量

上图中的export表示下行的Makefile文件中也可以用,不用再进行书写
(3)编写src中的Makefile文件,将所有的.c文件生成.o文件

上图中mv的意思是将所有的.o文件移动到obj文件夹中
(4)在obj文件中编写Makefile文件,将所有的.o文件汇集生成可执行文件,并将其移动到bin目录下

(5)再次编写总控Makefile文件,先执行src中的Makefile文件将所有的.c文件生成.o文件,再执行obj中的Makefile文件,将所有的.o文件编译汇集成一个可执行文件

本文详细介绍了Makefile的使用方法,包括创建、命名规范和目标执行顺序。讲解了假目标的概念及解决方法,预定义和自定义变量的设置,特别是递归与简单方式的区别。此外,还阐述了自动变量的应用,以及如何通过嵌套Makefile来组织项目文件结构,实现高效构建流程。
2300

被折叠的 条评论
为什么被折叠?



