.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