Makefile基础知识

一、常用基本符号

1.1 常用基本符号

常用符号表达式含义
$获取变量值($后紧跟变量,如$(PATH))
$@目标文件【也可以加上括号:$(@)】
$^所有依赖文件
$<第一个依赖文件
  $?更新过的依赖文件
$()获取Makefile中定义的变量的值
% 和 *均为通配符,表示“全部的xxx”,如:%.c或*.c,表示所有.c文件。
但是:
【 % 】为make语法规则通配符,在任何时候都表示“全部”的意思
【 * 】在变量定义或者函数调用时,该通配符会失效,需要搭配函数wildcard函数使用
.phony
clean伪目标:可以使用make clean执行该目标后面的语句
=延时赋值
即:变量使用的时候才会对其赋值

备注:make会将整个makefile全部展开完毕以后才决定对该变量赋什么值)
:=立即重新赋值(备注:会清空之前的值)
+=追加赋值
?=没有定义则赋值(备注:该操作符为也为延时赋值操作符的一种)

1.2 常用路径

  • 备注:
    Makefile中要调用shell命令的话,需要用到特殊语法,即命令前面加上shell。否则Makefile并不知道这是shell命令。
    格式为:
    $(shell xxx)
常用路径表达式含义
$(shell pwd)获取绝对路径。如 INCDIR:=$(shell pwd)

1.3 常用make默认变量

默认变量含义
$(MAKE)make命令本身
$(CC)cc
$(CXX)g++
$(AR)ar
$(RM)rm -rf
$(CXXFLAGS)
$(CFLAGS)
$(ARFLAGS)rv

二、常用符号释义与实例

2.1 $@ 和 $^

test.o : test.c test.h head.h
    gcc -o $@ $^
其中:
$@:表示test.o
$^:表示test.c test.h head.h这三个文件

2.2 $<

test.o : test.c
    gcc -o $@ $<
其中
$@:同上
$<:表示test.c

2.3 %

all: test1.o test2.o

%.o : %.c
    gcc -o $@ $<
其中:
注意1、Makefile规则是找第一个没有通配符的规则,也就是会找到all,发现有两个依赖,
注意2、那么看到这个%,就会在all那个规则中查找依赖文件,并逐次匹配,一次匹配一个,如:
(1)第一次匹配到test1.o,则%就表示test1,那么对应%.c就是test1.c
(2)第二次匹配到test2.o,则%就表示test2,那么对应%.c就是test2.c
(3)逐次匹配,直到匹配完最后一个依赖文件为止

2.4 $(@:xxx=)

(1)$@表示目标文件,
(2)= 表示用等号右边的字符串替换左边的字符串
如:

smdk2410_config : unconfig
    $(@:_config=)      #等号右边没东西,表示将smdk2410_config中的_config替换为空

上述代码替换完之后,会变成:(可以用echo命令打印试试)

smdk2410 : unconfig

三、:= += ?=测试

3.1 :=(重新赋值)

1、编写一个makefile代码如下:
在这里插入图片描述
2、测试结果:
在这里插入图片描述

可以看到x已经被重新赋值为Last_了,而y中的x还是之前的x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值