Makefile 工程管理工具

Makefile是什么

Makefile本质是一种脚本语言,主要用来管理工程中的源文件,Makefile的好处就是在Makefile文件中描述了源文件之间的编译和其他的关系,并且可以定义一些简单的脚本命令来完成一些复杂的工作.
有很多工具可以解释Makefile文件,例如Linux中的make,VC中的nmake,在一个很大的工程中,如果用Makefile来管理源文件的话,无疑是一个非常好的选择.

Makefile中一些简单的规则

在Makefile中若不及加入任何参数的情况下,默认生成第一个目标文件,若目标文件的依赖文件不存在,则在后续命令中寻找第一个依赖文件的生成命令,若后续的依赖文件也不存在,则递归查找下去,直到找到一个可以执行的命令.
在Makefile中还可指定生成文件中存在的任意一个目标文件,此命令则需要添加需要生成目标文件的参数(生成规则与上条生成规则相同).
Makefile中最基本的语法:

 	目标 : 依赖文件
 	(tab)命令				(注:命令签必须为tab,不可用空格替换)

例:

a.out : test.c
	gcc test.c -o a.out

添加注释:

#注释内容

简写规则:

$@ 目标文件
$^ 所有依赖文件
$< 第一个依赖文件

例:

#第一个举例可简写为
a.out : test.c
	gcc $^ -o $@
#或
a.out : test.c
	gcc $< -o $@

在Makefile中还可利用通配符匹配文件.
例:

#若当前目录下只存在test.c 文件,则上个举例可写为
a.out : %.c
	gcc $^ -o $@

在Makefile中若要生成的目标文件已经为最新生成的目标文件(判断是否为最新文件的规则为:目标文件的最后更新时间是否大于依赖文件),则不执行当前操作.

.PHONY : 目标(不论目标是否为最新都重新生成)

在Makefile中还可以使用变量来代替一些需要重复进行的操作,可以用一些变量来替代.
例:

#定义变量
变量名 = 文件,命令行内容等
#使用变量规则
$(变量名)
#例
src = test.c
cc = gcc
a.out : $(src)
	cc $^ -o $@
#在Makefile中一个变量不知能代替一个文件,也可以代替多个文件
#例如 
src = %.c #src为当前目录下所有.c文件

在Makefile中还可以执行一些shell命令,使用方法与变量使用方法相同

#例:
obj = $(shell pwd) #此命令为将当前路径赋值给变量obj
#在Makefile中,变量之间相互赋值规则
变量1 = $(变量2) # 将变量2的内容赋值给变量1

在Makefile中同样存在一些函数可供调用,用法与变量使用方法大致相同

#例
obj = $(addprefix prev name)#为name加前缀prev并赋值给obj

在Makefile中还存在非常多的规则和函数,在这里不做过多解释,本篇文章为新手笔记,如有错误,还望指出.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值