make 的主要预定义变量

本文介绍了GNU make工具中变量或宏的定义与使用方法。通过简单的变量定义可以避免重复输入冗长的编译选项,提高编译效率。此外,还列举了GNU make的一些预定义变量及其特殊含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 
C 编译器的名称,默认值为 cc。 
CFLAGS 
C 编译器的选项。 
CPP 
C 预编译器的名称,默认值为 $(CC) -E。 
CPPFLAGS 
C 预编译的选项。 
CXX 
C++ 编译器的名称,默认值为 g++。 
CXXFLAGS 
C++ 编译器的选项。 
FC 
FORTRAN 编译器的名称,默认值为 f77。 
FFLAGS 

FORTRAN 编译器的选项。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值