Makefile

Makefile作用

工程是由大量GCC文件构成,一个个执行过于麻烦,Makefile可以将工程文件有序执行

赋值符 =

name=a
curname=$(name)
name=aa

变量的真实值取决于它所引用的变量的最后一次有效值
最后输出curname=aa

赋值符 :=

name=a
curname:=$(name)
name=aa

不会使用后面定义的变量,只能使用前面已经定义好的
最后输出curname=a

赋值符 ?=

curname ?= z

curname没被赋值,就等于z

变量追加 +=

a=main,o
a+=input.o

a为main.o input,o

%

模式规则

main.o: main.c 
	gcc -c main.c  
input.o: input.c  
	gcc -c input.c  
calcu.o: calcu.c  
	gcc -c calcu.c
%.o:%.c

自动化变量

最常用
在这里插入图片描述在这里插入图片描述在这里插入图片描述

main.o: main.c 
	gcc -c main.c  
input.o: input.c  
	gcc -c input.c  
calcu.o: calcu.c  
	gcc -c calcu.c
%.o:%.c
	gcc -c $<

.PHONY :

伪目标

.PHONY : clean

条件判断

ifeq、 ifneq

ifeq 判断相等

ifeq (<参数 1>, <参数 2>) ifeq ‘‘<参数 1 <参数
ifeq ““<参数 1>””, ““<参数
ifeq ““<参数 1>””, ‘‘<参数
ifeq ‘‘<参数 1>’’, ““<参数

ifneq 判断不等

ifdef、ifndef

ifdef <变量名 >

如果“变量名”的值非空,那么表示表达式为真,否则表达式为假。“变量名”同样可以是一个函数的返回值。
ifndef 相反

函数

函数 subst

$(subst <from>,<to>,<text>)

在text中,将 from 换成 to

$(subst zzk,ZZK,my name is zzk)

my name is zzk中,zzk 换成 ZZK

函数 patsubst

$(patsubst <pattern>,<replacement>,<text>)

在text中,所有符合 pattern 的 换成 replacement
与上头不一样的——完成模式字符串替换
pattern replacement可以用**%**表示

$(patsubst %.c,%.o,a.c b.c c.c)

dir

提取目录

$(dir <names……>)
$(dir </src/a.c>)

返回/src

notdir

提取文件名

$(notdir <names……>)
$(notdir </src/a.c>)

返回a.c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值