Linux makefile改进

接着http://blog.csdn.net/a158337/article/details/39084725,继续学习makefile的改进。

改进版本一:使用变量

OBJ=main.o tool1.o tool2.o
make:$(OBJ)
        gcc -o main $(OBJ)
main.o:main.c tool1.h tool2.h
        gcc -c main.c
tool1.o:tool1.c tool1.h
        gcc -c tool1.c
tool2.o:tool2.c tool2.h
        gcc -c tool2.c
clean:
        rm -f main $(OBJ)

1.变量介绍

Makefile里面的变量分为自定义变量,预定义变量,自动变量和环境变量。里面你的OBJ就是自定义变量,预定义变量是通常在Makefile经常出现的变量,其中部分有默认值,在M

akefiled里的定义的变量就像C语言里的宏定义,代表了一个文本字符串,在make的时候会自动在引用的位置展开内容,预定义变量定义了常见的编译器,汇编器的名称,及其编

译选项,自定义变量声明时候需要赋初始值,使用的时候用$符号,变量定义的时候一般是 变量名=变量值,变量值不一定是要定义好的,也可以是定义在文件的任何地方,包括后

面用到的,也可以把等号换成“:=”

2.变量使用规则:

1.make 变量,make里面定义的或者是make的环境变量,需要引用 $( 变量)

2.出现在规则命令里面的shell变量,这些变量不属于Makefile而是一个shell变量,引用使用shell的$tmp

3.对于命令行出现的make变量也是使用$( 变量)

改进版本2:自动推导

CC=gcc
OBJ=main.o tool1.o tool2.o
make:$(OBJ)
        $(CC) -o main $(OBJ)
main.o:tool1.h tool2.h
tool1.o:tool1.h
tool2.o:tool2.h
.PHONY: clean
clean:
        rm -f main $(OBJ) 
让make自动推导,make只要看到一个.o文件,就会把对应的.c文件添加到依赖文件里面,并且gcc -c *.c也会被推导出来,所以简化了makefile。

改进版本3:自动变量$^ $< $@的使用

CC=gcc
OBJ=main.o tool1.o tool2.o
main:$(OBJ)
        $(CC) -o $@ $^
main.o:main.c tool1.h tool2.h
        $(CC) -c $<
tool1.o:tool1.c tool1.h
        $(CC) -c $<
tool2.o:tool2.c tool2.h
        $(CC) -c $<
.PHONY:clean
clean:
        rm -f main $(OBJ)             

 $^表示依赖中的所有参数, $<表示依赖中的第一个参数,$@表示目标集




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值