Makefile的简单语法

Makefile的关系是自上向下,逻辑流程是自下向上;自上向下建立关系树,自下向上执行命令

下面有一个简单的例子,对语法进行解析

CPPFLAGS = -Iinclude
CFLAGS = -g -Wall
LDFLAGS = -L../lib -lmycalc
CC = gcc

src = $(wildcard *.c)
obj = $(patsubst %.c, %.o, $(src))
target = app

$(target):$(obj)
    $(CC) $^ $(LDFLAGS) -o $@

%.o:%.c
    $(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@


.PHONY:clean
clean:
    -rm -f *.o
    -rm -f app

等号=前面是定义的变量,CPPFLAGS、CFLAGS是定义的编译选项;LDFLAGS是定义的连接选项,需要连接的库。

src = $(wildcard *.c),wildcard是Makefile内置的函数,功能是找到当前目录里所有的.c后缀的文件

obj = $(patsubst %.c, %.o, $(src)),patsubst也是Makefile的内置函数,功能是把上句函数找到的所有.c后缀的文件名替换为.o文件名

target = app,定义目标文件的名称

$(target):$(obj),目标:依赖(条件)

$(CC)  $^  $(LDFLAGS)  -o  $@,命令;$@表示目标,$^表示所有依赖

%.o:%.c,.o依赖.c

$(CC)  -c  $<  $(CFLAGS)  $(CPPFLAGS)  -o  $@,$<表示依赖中的第一个

.PHONY:clean,过滤掉当年目录的clean文件

clean:
    -rm -f *.o
    -rm -f app


clean,Makefile的第二个目标,默认执行第一个主题,如果想执行第二个目标,命令:make clean

命令前加-,命令出错还接着执行

小结:

Makefile的基本语法和逻辑关系就是这样,上面的代码可以满足程序员的平时编译需求。如果做项目,还要学习更多的Makefile知识,大家可以学习Makefile的官方文档。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值