我正在学习有关makefile的知识,对一些语法和后缀的工作原理感到有点困惑。
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“这一行到底是做什么的?
我不太明白$<是什么意思。
CPPFLAGS从何而来?(它是专门用于make的特殊语法吗?)
发布于 2013-07-16 15:03:28
.SUFFIXES为后缀规则定义了一组后缀。因此,在此示例中,您可以定义涉及后缀.o .cpp和.c的后缀规则。如果要定义规则.x.o,因为.x不在.SUFFIXES列表中,所以它不是后缀规则--相反,它将是构建文件.x.o的规则
$<是$(<)的缩写,它扩展到当前规则中目标的第一个依赖项。
$(CPPFLAGS)是一个make变量引用。因为您没有在这个makefile中设置它,所以它将展开为一个空字符串。除了约定之外,名称CPPFLAGS没有什么特别之处--它通常是您希望传递给c或c++编译器调用的一组C预处理器标志,这里就是这样使用它的。
https://stackoverflow.com/questions/17669902
复制相似问题