make 的主要预定义变量

来源:互联网 发布:黄金太阳2通关数据 编辑:程序博客网 时间:2024/06/05 18:35
GNU 的 make 工具除提供有建立目标的基本功能之外,还有许多便于表达依赖性关系 
以及建立目标的命令的特色。其中之一就是变量或宏的定义能力。如果你要以相同的编译 
选项同时编译十几个 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 工具称之为宏,实际是同一个东西。在 makefile 中引用变量的值 
时,只需变量名之前添加 $ 符号,如上面的 $(CC)  $(CCFLAGS) 
GNU make 
有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。表 13-2  
给出了一些主要的预定义变量,除这些变量外,GNU make 还将所有的环境变量作为自己 
的预定义变量。 
 13-2  GNU make 的主要预定义变量 
预定义变量 
含义 
$* 
不包含扩展名的目标文件名称。 
$+ 
所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 
$< 
第一个依赖文件的名称。 
$? 
所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 
$@ 
目标的完整名称。 
$^ 
所有的依赖文件,以空格分开,不包含重复的依赖文件。 
$% 
如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为  
mytarget.so(image.o)
,则 $@  mytarget.so,而 $%  image.o 
AR 
归档维护程序的名称,默认值为 ar 
ARFLAGS 
归档维护程序的选项。 
AS 
汇编程序的名称,默认值为 as 
ASFLAGS 
汇编程序的选项。 
CC 
编译器的名称,默认值为 cc 
CFLAGS 
编译器的选项。 
CPP 
预编译器的名称,默认值为 $(CC) -E 
CPPFLAGS 
预编译的选项。 
CXX 
C++ 
编译器的名称,默认值为 g++ 
CXXFLAGS 
C++ 
编译器的选项。 
FC 
FORTRAN 
编译器的名称,默认值为 f77 
FFLAGS 

FORTRAN 编译器的选项。