makefile学习个人笔记
发布日期:2021-06-28 20:17:08
浏览次数:2
分类:技术文章
本文共 1196 字,大约阅读时间需要 3 分钟。
Rules
基本形式:
targets : prerequisites recipe ...
targets
要生成的目标文件,或者定义的命令prerequisites
targets所需要的输入文件,如果是target是命令的话可以为空recipe
从prerequisites得到target,所执行的动作
参考资料:
Variable
变量的定义有几种方式:’=’,’:=’, ‘?=’.
变量名:=变量值
‘=’是递归展开,’:=’是简单展开
通过$(变量名)
使用变量
参考资料:
Wildcast
make使用的通配符(wildcard characters)有:‘*’, ‘?’ , ‘[…]’.
注意 变量定义的时候,通配符不展开,例如
### objects的值是字符串'*.o'objects = *.o
在target或者prerequisites中使用以上变量object
时,会在所在处展开。在recipe中使用时,会在recipe执行的时候展开。要让变量直接在赋值时的话,使用Wildcard 函数
objects := $(wildcard *.o)
参考资料:
String substitution
$(patsubst pattern,replacement,text)
对text
进行操作,把符合pattern
的替换成replacement
。在pattern
中使用%
作为通配符,若replacement
中也有%
,那么%
表示pattern
的对应文字。
例子:
$(patsubst %.c,%.o,x.c.c bar.c)
得到x.c.o bar.o
参考资料:
Pattern Rules
%.o : %.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
表示对所有x.c操作,得到x.o
$<
和$@
是自动变量(automatic variable):
$<
第一个prerequisite的文件名$@
target的文件名
参考资料:
同时编译多个可执行文件
默认情况下只会编译链接第一个可执行文件,如果要同时make多个可执行文件,需要定义phony target(伪目标,虚目标),令所要生成的几个可执行文件作为prerequisites. 例如
all : prog1 prog2 prog3.PHONY : allprog1 : prog1.o utils.o cc -o prog1 prog1.o utils.oprog2 : prog2.o cc -o prog2 prog2.oprog3 : prog3.o sort.o utils.o cc -o prog3 prog3.o sort.o utils.o
参考:
转载地址:https://blog.csdn.net/X_And_Y/article/details/81290820 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月25日 21时41分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
深入解析android核心组件和应用框架,社招面试心得
2019-04-29
深度解析跳槽从开始到结束完整流程,持续更新中
2019-04-29
深度解析跳槽从开始到结束完整流程,面试真题解析
2019-04-29
hashmap扩容过程,字节大神强推千页PDF学习笔记,经典好文
2019-04-29
kotlin面试题!Android大厂高频面试题解析,薪资翻倍
2019-04-29
kotlin面试题!一口气拿了9家公司的offer,已拿offer入职
2019-04-29
retrofit优点,互联网寒冬公司倒闭后,年薪50W
2019-04-29
retrofit原理面试,Android性能优化最佳实践,面试必备
2019-04-29
【工作感悟】Android多进程从头讲到尾,offer拿到手软
2019-04-29
【微信小程序】面试一路绿灯Offer拿到手软,好文推荐
2019-04-29
Android之内存泄漏调试学习与总结,分享PDF高清版
2019-04-29
事件分发机制怎么回答,Android开发究竟该如何学习,使用指南
2019-04-29
python3 语法注意
2019-04-29
C语言复习
2019-04-29
Spring:源码解读Spring IOC原理
2019-04-29
Spring AOP原理分析一次看懂
2019-04-29
Spring AOP的实现原理(二)
2019-04-29
Spring AOP的实现原理(三)
2019-04-29
Spring AOP的实现原理(四)
2019-04-29
Spring AOP的实现原理(五)
2019-04-29