Makefile常用规则

1.Makefile中的内部参数


$@  表示目标文件
$^  表示所有的依赖文件
$<  表示第一个依赖文件
$?  表示比目标还要新的依赖文件列表
$+  同样表示所有依赖目标的集合(不去除重复的依赖目标)

2.调用变量

Makefile变量使用 () ( ) 或 者 {}来调用,如果是shell变量,则需要使用$$来引用。

一种变量替换方法:


src := a.c b.c
obj := $(src:%.o=%.c)

变量赋值方法:

=   基本的赋值
:=  覆盖之前的值
?=    是如果没有被赋值过就赋予等号后面的值(一般可用来设置默认值)
+=   追加变量

这里需要注意=和:=的区别,:=赋值是从它在Makefile中的位置处开始生效的,在它之前的变量还保持原有值,而=会以最后一个赋值为准,并且之前的引用也会被更新。所以如果定义的变量是在Makfile中会变化的,一定要使用:=。

3.通配符

需要注意:Makefile 中通配符%表示所有的字符,不要和shell语法告混淆,shell 中通配符*表示所有的字符

4.调用shell命令

  • 使用$(shell …)格式来调用shell命令

  • 多个命令连续执行需要以\连接,因为Makefile执行shell是按行执行


SUBDIR=src example

all:

    @for subdir in $(SUBDIR); \

    do\

        echo "building "; \

    done

这里在shell命令前加@符号,主要目的是不让该条命令显示在makefile中的编译log中,当然该条指令依然会执行,只不过是“默默”的执行。

  • 以`符号来执行,比如:PATH=`pwd`

5.函数

函数调用方式:

例如:$(wildcard *.c),常用函数如下:

wildcard : 扩展通配符
notdir : 去除路径
patsubst :替换通配符
strip: 去空格
filter: 过滤
filter_out:反过滤
addprefix:加前缀
addsuffix:加后缀
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值