一步一步学写makefile (三) - 隐规则

一步一步学写makefile (三) - 隐规则

作者: 江淼
Blog: http://blog.csdn.net/jiangfriend
时间: 2007-6-27 18:28

在学习特殊的变量之前,不得不先学习一下隐规则。隐规则可以理解为make对输入数据产生的默认动作。
回顾之前任务二是的makefile
#任务二的makefile
hello: hello.o func.o
    gcc hello.o func.o -o hello
hello.o: hello.c
    gcc -c hello.c -o hello.o
func.o: func.c func.h
    gcc -c func.c -o func.o

在使用隐规则的情况下,我们把该makefile改写成   
#使用潜规则的makefile
PROC = hello
CC = gcc
OBJECTS = hello.o func.o

$(PROC): $(OBJECTS)



PROC = hello
CC = gcc
OBJECTS = func.o

$(PROC): $(OBJECTS)
一下子简化了相当多。make就是make,专业滴。
观查输出发现可谓一气呵成。
gcc    -c -o hello.o hello.c
gcc    -c -o func.o func.c
gcc   hello.o func.o   -o hello
我们分析make的理解过程
生成hello需要hello.o与func.o
当%.o不存在时 寻找%.c并执行 $(CC) -c $(CPPFLAGS) $(CFLAGS) 进行编译
当所有的object已生成后执行 $(CC) $(LDFLAGS) $(LOADLIBES) $(LDLIBS)进行链接生成项目的最终目标hello

我们只需求对变量著如CC,CFLAGS等变量进行设置,余下的就交给make吧
这里列举几个常用的变量

名称
说明
缺省
CC C编译器 cc
CFLAGS C参数
CXX C++编译器 g++
CXXFLAGS
C++参数

CPP C预处理,输出处理结果 $(CC) -E
CPPFLAGS 预处理参数
AR ar
ARFLAGS AR参数
LDFLAGS
链接参数



条件
处理过程
%.o <- %.c
$(CC) -c $(CPPFLAGS) $(CFLAGS)
%.o <- %.C,%.cpp,%.cc
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)
无扩展名 <- 需求的对象
$(CC) $(LDFLAGS) $(LOADLIBES) $(LDLIBS)

更详细的说明参见 http://www.gnu.org/software/make/manual/make.html#Using-Implicit

当然处理过程是可以重定义的,不过在重定义之前要学会使用特殊变量,下节再详细介绍
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值