一个makefile文件的含义

来源:百度知道 编辑:UC知道 时间:2024/05/09 18:35:12
这是一个完整的makefile文件,请问加问号的句子是什么意思,特别是$@,$<,$^是什么意思
CC=gcc
FLAGSO=-fPIC -shared
OBJS=creat_key.o creat_semid.o semaphore_P.o semaphore_V.o
INCLDIR=-I../include
all:clean libtest.so
.c.o:?????????????
$(CC) ${INCLDIR} -c $<??????
libtest.so:${OBJS}
$(CC) $(FLAGSO) -o $@ $^???????????
clean:
rm -rf libtest.so aa bb
rm -rf *.o

看<<跟我一起写makefile>>

表 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 编译器的选项。