Makefikle(三)

                      Makefile变量

Makefile 变量分为:用户自定义变量、预定义变量、自动变量、环境变量。

 

预定义变量包含一些常见编译器、汇编器的名称及编译选项。常见预定义变量如下:

       AR:库文件维护程序的名称,默认为ar

       AS:汇编程序的名称,默认为as

       CC:C编译器的名称,默认为gcc

       CPP:C预处理器的名称,默认为gcc -E

       CXX:C++编译器的名称,默认为g++

       FC:Fortran编译器的名称,默认为f77

       RM:文件删除命令的名称,默认为rm -f

       ARFLAGS:库文件选项,无默认值

       ASFLAGS:汇编程序选项,无默认值

       CFLAGS:C编译器选项,无默认值

       CPPFLAGS:C预处理器选项,无默认值

       CXXFLAGS:C++编译器选项,无默认值

       FFLAGS:Fortran编译器选项,无默认值

 

在上一篇博客中Makefile如下:

OBJ = world

OBJS = world.o robot.o human.o animal.o

$(OBJ): $(OBJS)

       gcc$(OBJS) -o $(OBJ)

animal.o: animal.c

       gccanimal.c -c -o animal.o

human.o: human.c

       gcchuman.c -c -o human.o

robot.o: robot.c

       gccrobot.c -c -o robot.o

world.o: world.c

       gccworld.c -c -o world.o

clean:

       rm$(OBJ) $(OBJS)

 

我们写的程序,目前是在gcc环境编译,如果想变为g++环境编译,需要把Makefile中的gcc全部改为g++,如果程序的编译选项增加 -g,则需要在所有的 -c -o 前加 -g。这时就可以利用预定义变量定义gcc 与 -c -o,修改后的Makefile如下:

 

OBJ =world

OBJS = world.o robot.o human.o animal.o

CC = gcc

CFLAGS = -c -o

$(OBJ): $(OBJS)

       $(CC)$(OBJS) -o $(OBJ)

animal.o: animal.c

       $(CC)animal.c $(CFLAGS) animal.o

human.o: human.c

       $(CC)human.c $(CFLAGS) human.o

robot.o: robot.c

       $(CC)robot.c $(CFLAGS) robot.o

world.o: world.c

       $(CC)world.c $(CFLAGS) world.o

clean:

       rm$(OBJ) $(OBJS)

 

这样,我们的程序无论改变编译器还是改变编译选项都非常方便。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值