Makefile 初期学习笔记

注:本笔记并不专业,可参考这一博主,由浅入深讲解的很好


1. Makefile 文件命名

a. Makefile文件没有后缀名,命名有几种可选,如makefileMakefile,推荐用是Makefile


2. Makefile文件变量赋值

a. 变量的使用可以提高makefile的可维护性。⼀个变量的定义很简单,就是⼀个名字(变量名)后⾯跟上⼀个等号,然后在等号的后⾯放这个变量所期望的值。对于变量的引⽤,则需要采⽤$(变量名)或者${变量名}这种模式。类似C语言中的#define pi 3.14,利用变量来一般化文件名,需要修改时,只需要修改这些变量的定义即可。

CC=gcc 
RM=rm
OBJS=main.o a.o 
EXE=main 
$(EXE):$(OBJS)
		$(CC) -o $@   $^
%.o:%.c:
		$(CC) -c -o $@ $^
clean:
 		$(RM)   $(EXE)  $(OBJS)

b. 对于变量的赋值有四种,分别为
(1)即时赋值 a:=1:赋值后,该变量值即刻等于右值
(2)延时赋值 a=1:赋值后,该变量的值可以随着后续c值的变化而变化
(3)条件赋值 a?=1:如果a已经被定义,则该赋值操作不执行;否则a值等于右值
(4)追加赋值 a+=1:在a值后,以空格隔开追加一个值


c.自动变量
(1)$@:表示目标。存在多个目标时,表示任何造成命令执行的目标
(2)$^:表示所有依赖
(3)$<:仅表示第一个依赖

3. 利用上述变量可以简化makefile编写,无需每个.o文件都写一遍

4. 假目标:个人理解为防止出现和目标名字相同的文件,所以对真目标的一种保护,这样其他文件均为假目标

CC=gcc 
RM=rm
OBJS=main.o a.o 
EXE=main 
$(EXE):$(OBJS)
		$(CC) -o $@   $^
%.o:%.c:
		$(CC) -c -o $@ $^
clean:
 		$(RM)   $(EXE)  $(OBJS)
.PHONY  clean

5. 函数

a. wildcard函数:通配符函数,形式为$(wildcard patten)
b. patsubst函数 用来进行字符换替换,形式为$(patsubst patten, replacement, text)

c. 应用:对于新增或删减一个.c文件,无需重新修改Makefile,示例如下

CC=gcc 
RM=rm
SRCS=$(wildcard *.c) 
OBJS=$(patsubst %.c,  %.o, $(SRCS))
EXE=main 
$(EXE):$(OBJS)
		$(CC) -o $@   $^
%.o:%.c:
		$(CC) -c -o $@ $^
clean:
 		$(RM)   $(EXE)  $(OBJS)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值