MAKEFILE 学习笔记 —— 实用功能

MAKEFILE 学习笔记 —— 实用功能


一. 变量的使用

当我们的程序越来越复杂时,变量的使用可以大大提高我们的效率。makefile 中变量的使用有点类似于 c 语言中的宏,格式如下
name = file
使用变量时应该加上$(),代码如下所示
obj = main.o func.o
aaa:    $(obj)
    gcc -o aaa  main.o  func.o
main.o: main.c  ex2.h
    gcc -std=c99 -c main.c
func.o: func.c  ex2.h
    gcc -std=c99 -c func.c

clean:
    rm -fr $(obj) aaa
  • name:变量的名字,如以上代码中的 obj
  • file :变量所代表的文件名 如以上代码中的 main.o func.o

二. make的自动推导

在我们使用make进行编译链接时,像以上示例的代码不免有些麻烦,而 make 有一个自动推导的功能可以大大提高工作效率。即,当 make 发现一个 .o 文件时,便会自动将其所依赖的 .c 文件加载进来,这被称为自动推导,这也被称为 make 的隐晦规则。如下示例便是上面那个例子的 make 自动推导版。
obj = main.o func.o
aaa:    $(obj)
    gcc -o aaa  main.o  func.o
main.o:     ex2.h
func.o:     ex2.h

clean:
    rm -fr $(obj) aaa

三. 共用.h文件

当我们的许多 .c 文件共用一个 .h 文件时,每次都写入同一个 .h 文件未免太麻烦,这里有一个精简的方法,即共用 .h 文件,如下代码:
obj = main.o func.o
aaa:    $(obj)
    gcc -o aaa  main.o  func.o
main.o func.o:      ex2.h

clean:
    rm -fr $(obj) aaa
如以上代码,将共用同一个 .h 文件的目标文件写在同一行内即可。

四. 打扫

当我们编译完程序之后,便要清理一下所生成的那些链接文件。如下代码
obj = main.o func.o
aaa:    $(obj)
    gcc -o aaa  main.o  func.o
main.o func.o:      ex2.h

.PHONY: clean
clean :
    -rm -fr $(obj) aaa
  • PHONY: clean 是声明 clean 是伪目标
  • rm 之前的 “-” 是告诉 make 若编译时遇到错误,不用管,继续向下编译。

参考文献

[1] 陈浩《跟我一起写Makefile》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值