Makefile知识点总结:

 #Makefile知识点总结:
#一、make的参数:
#make -B所有文件都编译
#make -h或者--help帮助文档
#make -t 显示出较新(修改过)的文件
#make -k 即使一个文件编译出错了,不要终止,继续编译其他文件。
#make -n / --just-print运行预览
#make -o指定生成文件
#make -s 不输出运行过程指令,只输出运行结果
#make -v查看make 版本信息
#make -r 取消隐含规则(编译规则都得自己写)

#二、隐含规则
#约定俗成的东西:
#make 时自动搜索Makefile/makefile文件;
#编译.c文件时默认指令:$(CC) -c $(CFLAGS) $(CPPFLAGS) ; .c文件编译时自动加上CFLAGS,CPPFLAGS;CC默认赋值为cc;
#编译.s文件时默认指令:$(AS) -c $(ASFLAGS) ;AS默认赋值为as;
#RM 默认为rm -f (删除)
#最好不要用隐含规则,因为.y文件可能生成.c文件。.c再生成.o文件。而中间的文件将会被RM掉
#模式规则:%表示任意字符(至少一个);比如%.c至少3个字符;s%.c至少4个字符。

#重载隐含规则:
#1、%.o:%.c  目标为模式.o对应模式.c  xx.o依赖于xx.c (akos的Makefile)
# $(CC) $(CFLAGS) -c -o $@ $<
#2、%.o:%.c ;第二行没有规则,同样取消隐含规则,实现重载

#老式风格“后缀”规则(会被模式规则取代,but为了兼容可以存在)
#双后缀规则:
#1、.c.o: #不能有依赖,且必须有规则。#相当于 %.o:%.c
# $(CC) $(CFLAGS) -c -o $@ $<
#
#2、.c.a: #不能有依赖,#相当于 %.o : %.c,最后再打包
# $(CC) $(CFLAGS) -c -o $@ $<
# $(AR) -r $@ $<

#三、自动化变量:
#1、$@目标的集合;(模式规则中逐个取出目标)
#2、$%库文件的成员;foo.a(foo.o),则$%为foo.o;
#3、$<第一个依赖(模式规则中逐个取出依赖)
#4、$?比目标新的依赖集合
#5、$^依赖的集合,依赖以空格分开,重复的依赖只去一个。
#6、$+依赖的集合,依赖以空格分开,重复的依赖都保
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值