linux学习笔记-Makefile规则

#Makefile

OBJS = kang.o  yul.o
CC = Gcc
CFLAGS = -Wall  -O  -g


sunq : $(OBJS)
$(CC)  $^  -o  $@


kang.o : kang.c  kang.h
$(CC   $(CFLAGS)  -c  $<  -o  $@


yul.o : yul.c yul.h
$(CC)  $(CFLAGS)  -c  $<  -o  $@

#The end of Makefile

Makefile 的规则是Make 进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。一般的,Makefile 中的一条语句就是一个规则。在上面的例子中,都显示地指出了Makefile中的规则关系,如“$(CC) $(CFLAGS) -c $< -o $@”,但为了简化Makefile的编写,make还定义了隐式规则和模式规则。

1.隐式规则

隐含规则能够告诉make 怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。Make 会自动搜索隐式规则目录来确定如何生成目标文件。则有:

#Makefile

OBJS = kang.o  yul.o
CC = Gcc
CFLAGS = -Wall  -O  -g


sunq : $(OBJS)
$(CC)  $^  -o  $@

#The end of Makefile

为什么可以省略后两句呢?因为Make的隐式规则指出:所有“.o”文件都可自动由“.c”文件使用命令“$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c –o file.o”生成。这样“kang.o”和“yul.o”就会分别调用“$(CC) $(CFLAGS) -c kang.c -o kang.o”和“$(CC) $(CFLAGS) -c yul.c-o yul.o”生成。

Makefile中常见隐式规则目录
对应语言后缀名规 则
C编译:.c变为.o$(CC) –c $(CPPFLAGS) $(CFLAGS)
C++编译:.cc或.C变为.o$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)
Pascal编译:.p变为.o$(PC) -c $(PFLAGS)
Fortran编译:.r变为-o$(FC) -c $(FFLAGS)
2.模式规则

模式规则是用来定义相同处理规则的多个文件的。它不同于隐式规则,隐式规则仅仅能够用make 默认的变量来进行操作,而模式规则还能引入用户自定义变量,为多个文件建立相同的规则,从而简化Makefile的编写。模式规则的格式类似于普通规则,这个规则中的相关文件前必须用“%”标明。

#Makefile

OBJS = kang.o  yul.o
CC = Gcc
CFLAGS = -Wall  -O  -g


sunq : $(OBJS)
$(CC) $^  -o  $@
%.o : %.c
$(CC)  $(CFLAGS)  -c  $<  -o  $@

#The end of Makefile




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值