makefile 中的变量(宏)

 http://baike.baidu.com/view/974566.htm

其中之一就是变量或宏的定义能力。如果你要以相同的编译

  选项同时编译十几个 C 源文件,而为每个目标的编译指定冗长的编译选项的话,将是非
  常乏味的。但利用简单的变量定义,可避免这种乏味的工作:

 

  # Define macros for name of compiler

  CC = gcc

 

  # Define a macr o for the CC flags

  CCFLAGS = -D_DEBUG -g -m486

 

  # A rule for building a object file

  test.o: test.c test.h
  $(CC) -c $(CCFLAGS) test.c
  在上面的例子中,CC 和 CCFLAGS 就是 make 的变量。 GNU make 通常称之为变量,

  而其他 UNIX 的 make 工具称之为宏,实际是同一个东西。【我认为 宏比较容易理解,好像C语言中。】

在 makefile 中引用变量的值时,只需变量名之前添加 $ 符号,如上面的 $(CC) 和 $(CCFLAGS)。

在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。

 $Z  $(Z)    其中两个引用是完全一致的。

需要注意的是一些宏的预定义变量,在Unix系统中,$*、$@、$?和$<四个特殊宏的值在执行命令的过程中会发生相应的变化,而在GNU make中则定义了更多的预定义变量。

 

  GNU make 有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。表 13-2

  给出了一些主要的预定义变量,除这些变量外,GNU make 还将所有的环境变量作为自己
  的预定义变量。
  表 13-2 GNU make 的主要预定义变量

预定义变量

  含义
  $*

  不包含扩展名的目标文件名称。

 

  $+
  所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。

 

  $<

  第一个依赖文件的名称。

 

  $?

  所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。

  

        $@

  目标的完整名称。

  

$^

  所有的依赖文件,以空格分开,不包含重复的依赖文件。
  $%
  如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为
  (image.o),则 $@ 为 ,而 $% 为 image.o。
  AR
  归档维护程序的名称,默认值为 ar。
  ARFLAGS
  归档维护程序的选项。
  AS
  汇编程序的名称,默认值为 as。
  ASFLAGS
  汇编程序的选项。
  CC
  C 编译器的名称,默认值为 cc。

 

 

  CFLAGS
  C 编译器的选项。
  CPP
  C 预编译器的名称,默认值为 $(CC) -E。
  CPPFLAGS
  C 预编译的选项。

  

CXX

  C++ 编译器的名称,默认值为 g++。

 

  CXXFLAGS

  C++ 编译器的选项。
  
  Makefile以文件名:文件名的形式比较冒号右边的文件是不是较左边的文件有更新,如果有更新则执行下一行的程序代码。因此Makefile可以把文件关联起来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值