Makefile语法

时间:2013-07-16 06:54:26

标签: makefile

我正在学习makefile,对于某些语法以及SUFFIXES的工作方式我有点困惑。

CPP = g++
OFLAG = -o
.SUFFIXES : .o .cpp .c
.cpp.o : 
    $(CPP) $(CPPFLAGS) -c $<
.c.o :
    $(CPP) $(CPPFLAGS) -c $<

all: \
    Return \
        Declare \
    Ifthen \    
    Guess \
    Guess2 \

Return: Return.o
    $(CPP) $(OFLAG)Return Return.o

Deckare: Declare.o
    $(CPP) $(OFLAG)Declare Declare.o

# follow same format for other executables

Return.o: Return.cpp
Declare.o: Declare.cpp

# follow same format for other executables

“.SUFFIXES:.o .cpp .c”这一行实际上是做什么的?

我不太明白$&lt;手段。

CPPFLAGS来自哪里? (这是一个特殊的语法,只为make?)。

1 个答案:

答案 0 :(得分:3)

.SUFFIXES定义了可以理解后缀规则的后缀集。因此,通过此示例,您可以定义涉及后缀.o .cpp.c的后缀规则。如果您要定义规则.x.o,因为.x不在.SUFFIXES列表中,它不是后缀规则 - 而是构建文件的规则.x.o

$<$(<)的缩写,并扩展为当前规则中目标的第一个依赖关系。

$(CPPFLAGS)是一个make变量引用。由于您没有在此makefile中设置它,它将扩展为空字符串。除了约定之外,名称CPPFLAGS没有什么特别之处 - 它通常是要传递给c或c ++编译器的调用的C预处理器标志集,这正是它在这里使用的方式。 / p>