.SUFFIXES 后缀自定义规则
# From "Thinking in C++, 2nd Edition, Volume 1,
# Annotated Solutions Guide" by Chuck Allison
# At http://www.BruceEckel.com
# (c)2001 MindView Inc. Copyright notice in Copyright.txt
# Automatically-generated MAKEFILE
# For examples in directory .\S02
# Invoke with: make
CPP = g++
OFLAGS = -c
EXEFLAG = -o
OBJEXT = obj
#自定义三个后缀规则 .cpp .obj .exe
.SUFFIXES : .cpp .$(OBJEXT) .exe
#.obj 的依赖对应的 .cpp 文件, 也可以理解为 根据.cpp 文件生成.obj 文件。
.cpp.$(OBJEXT) :
$(CPP) $(OFLAGS) $<
#同理.exe依赖.cpp文件,也可以理解为根据.cpp 文件生成.exe文件。
.cpp.exe :
$(CPP) $< $(EXEFLAG) $@
Borland: \
Area.exe \
FileView.exe \
Fillvector.exe \
Fillvector2.exe \
FloatVector.exe \
FloatVector2.exe \
FloatVector3.exe \
Hello2.exe \
WordCount.exe \
Words.exe \
Words2.exe
Microsoft: \
Area.exe \
FileView.exe \
Fillvector.exe \
Fillvector2.exe \
FloatVector.exe \
FloatVector2.exe \
FloatVector3.exe \
Hello2.exe \
WordCount.exe \
Words.exe \
Words2.exe
g++295: \
Area.exe \
FileView.exe \
Fillvector.exe \
Fillvector2.exe \
FloatVector.exe \
FloatVector2.exe \
FloatVector3.exe \
Hello2.exe \
WordCount.exe \
Words.exe \
Words2.exe
g++3: \
Area.exe \
FileView.exe \
Fillvector.exe \
Fillvector2.exe \
FloatVector.exe \
FloatVector2.exe \
FloatVector3.exe \
Hello2.exe \
WordCount.exe \
Words.exe \
Words2.exe
edg: \
Area.exe \
FileView.exe \
Fillvector.exe \
Fillvector2.exe \
FloatVector.exe \
FloatVector2.exe \
FloatVector3.exe \
Hello2.exe \
WordCount.exe \
Words.exe \
Words2.exe
clean:
ifeq ($(notdir $(SHELL)),COMMAND.COM)
del *.obj
del *.exe
del *.tds
del *.o
else
rm -f *.o *.obj *.exe *.tds
endif
#对应的cpp -> exe 依赖关系.
Area.exe: Area.cpp
FileView.exe: FileView.cpp
Fillvector.exe: Fillvector.cpp
Fillvector2.exe: Fillvector2.cpp
FloatVector.exe: FloatVector.cpp
FloatVector2.exe: FloatVector2.cpp
FloatVector3.exe: FloatVector3.cpp
Hello2.exe: Hello2.cpp
WordCount.exe: WordCount.cpp
Words.exe: Words.cpp
Words2.exe: Words2.cpp
github: https://github.com/chujiangke/Thinking-in-C-.git