[ C++ÅJ ]
XVúF
b++Ìrhðfmt makeÅs¢Ü·B
êÂÌsrcfBNgAêÂÌincludefBNg©çÈé\[Xt@CðmakeµAêÂÌÀst@Cð쬵ܷB
PROGRAM = hello.exe SRCS = Hello.cc Main.cc OBJS = $(subst .cc,.o,$(SRCS)) RM := rm CXX := g++ CC := g++ CPPFLAGS = -I../include LDFLAGS = -mno-cygwin $(PROGRAM): $(OBJS) $(LINK.o) $^ $(LOADLIBES) -o $@ .PHONY: clean clean: $(RM) $(OBJS) $(PROGRAM)
.cct@C©ç.ot@CÖRpC·é[ÍAGNU makeÌÃÙÌ[ªgíêĢܷB
makeðÀs·éÆA
$(CC) $(LDFLAGS) $(TARGET_ARCH) $^ $(LOADLIBES) -o $@}NªWJ³êÀs³êéá
g++ -mno-cygwin Hello.o Main.o -o hello.exe
$(COMPILE.cc) $(OUTPUT_OPTION) $<WJ³êéÔ}N
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $<}NªWJ³êÀs³êéá
g++ -mno-cygwin -I../include -c -o Hello.o Hello.cc
makeÅgp·éR}h¼ÍAÚA«ðl¶µÄÏÅ\·Ìªæ¢KµÅ·B
RM := rm CXX := g++ CC := g++
ÄAWJ·éKvªÈ¢ÌÅAPWJÏÆµÄãüi:=jðgpµÄ¢Ü·B
t@Cª¶ÝµÈ¢^[Qbgi[^[QbgjÍA.PHONYÅwèµÜ·BôR[^[QbgƯ¶¼OÌt@Cª¶ÝµÄµÜÁ½êÌë®ìðh¬Ü·B
.PHONY: clean
\[Xt@CðMakefileÅwè·éÌÅÍÈA»ÌêÅJgfBNgÉ éàÌðÎÛÆ·é±ÆàūܷB
SRCS := $(wildcard *.cc) OBJS = $(subst .cc,.o,$(SRCS))
Ver.1ÅÍAwb_[t@CÌÏXÍmakeÉm³êܹñB»±ÅAwb_[t@CÌÏXðmū鿤É˶ÖWÌLqðÇÁµÜ·B
PROGRAM = hello.exe SRCS = Hello.cc Main.cc OBJS = $(subst .cc,.o,$(SRCS)) RM := rm MV := mv CXX := g++ CC := g++ SED := sed CPPFLAGS = -I../include LDFLAGS = -mno-cygwin dependencies = $(subst .o,.d,$(OBJS)) $(PROGRAM): $(OBJS) $(LINK.o) $^ $(LOADLIBES) -o $@ .PHONY: clean clean: $(RM) $(OBJS) $(PROGRAM) $(dependencies) ifneq "$(MAKECMDGOALS)" "clean" include $(dependencies) endif %.d: %.cc $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -M $< | \ $(SED) 's,\($(notdir $*)\.o\) *:,$(dir $@)\1 $@: ,' >[email protected] $(MV) [email protected] $@
\[Xt@C(.cc)Æwb_[t@C(.hh)Ì˶ÖWÍA.dt@CÉLqµÜ·B.dt@CÍAgccÌ-MIvVŶ¬³êé˶ÖWt@C©çsedR}hðgÁÄoµÜ·Bi¼ÌRpCÅÍIvVÆoÍ`®ªá¤ÌŲ®ªKvj
.dt@CÍsxC³³êéÌÅAMakefile©çinclude·éæ¤ÉµÄ¢Ü·B
fBNgÉεÄÄAIÉÀs·éMakefileðLq·éâèûÍAÐuGNU Make æ3ÅvÅͧ³êĢܹñBãíèÉAefBNgÌÝèðLqµ½ÂÊt@CðCN[hµ½1ÂÌMakefileÅSÌð§ä·éû@ð§µÄ¢Ü·B
[To Be Description]
ϼ | àe |
---|---|
$@ | ^[QbgÌt@C¼ |
$% | CuÌ\¬wèÌvf |
$< | ÅÌK{ÚÌt@C¼ |
$? | ^[QbgæèÅVÌK{ÚðXy[XÅæØÁ½Xg |
$^ | ·×ÄÌK{ÚðXy[XÅæØÁ½Xgid¡Íj |
$+ | ·×ÄÌK{ÚðXy[XÅæØÁ½Xgid¡ðÜÞj |
$* | ^[Qbgt@C¼ÌTtBbNXð¢½t@C¼ibasenamej |
V{ | àe | ftHgÌè` | |
CXX | C++RpCR}h¼ | g++ | |
CXXFLAGS | C++RpCIvV | ¢è` | |
CPPFLAGS | vvZbTpIvV | ¢è` | |
TARGET_ARCH | ¢è` | ||
LDFLAGS | JpIvV | ¢è` | |
COMPILE.cc | C++ÌRpCÀs | $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c | |
COMPILE.C | $(COMILE.cc) | ||
COMPILE.cpp | $(COMILE.cc) | ||
LINK.cc | C++ÌNÀs (\[X©çêCÉÀsÌðìéj |
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) | |
LINK.C | $(LINK.cc) | ||
LINK.cpp | $(LINK.cc) | ||
LINK.o | IuWFNgt@CÌN | $(CC) $(LDFLAGS) $(TARGET_ARCH) | |
OUTPUT_OPTION | -o $@ | ||
C/C++¾êpÌ[ð²µÜµ½BSÄð©éêA--print-data-base (-p)IvVðg¢Ü·B
[ | Às | |
%: %.o | $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@ | |
%: %.cc | $(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@ | |
%.o: %.cc | $(COMPILE.cc) $(OUTPUT_OPTION) $< | |
%: %.C | $(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@ | |
%.o: %.C | $(COMPILE.C) $(OUTPUT_OPTION) $< | |
%: %.cpp | $(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@ | |
%.o: %.cpp | $(COMPILE.cpp) $(OUTPUT_OPTION) $< | |
.cc.o: | $(COMPILE.cc) $(OUTPUT_OPTION) $< | |
.cc: | $(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@ | |
.C.o: | $(COMPILE.C) $(OUTPUT_OPTION) $< | |
.C: | $(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@ | |
.cpp.o: | $(COMPIILE.cpp) $(OUTPUT_OPTIONS) $< | |
.cpp: | $(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@ |
ÃÙ[ðí·éÈçÎAóÌ[ðLqµÜ·B
%.o: %.l
p^[[ÍAt@C¼{Ì(basename)ð'%'ŦµA[ðLqµÜ·B
%.o: %.c $(COMPILE.c) $(OUTPUT_OPTION) $<
p^[[ÅÍt@C¼ÌÅ%Í1xµ©g¦Ü¹ñB
ÁèÌ^[QbgÉεÄÌÝp^[[ðKp³¹é±ÆªÅ«Ü·B
$(OBJECTS): %.o: %.c $(CC) -c $(CPPFLAGS) $< -o $@
$(OBJECTS)ÉLq³ê½t@Cð\z·éÆ«ÉÌÝp^[[ðKpµÜ·B
TtBbNX[ÍAÌmakeÆÌÝ·«Ì½ßÉc³êĢܷBGNU makeÅLq·éêÍp^[[ðg¤Ìªx^[Å·B
ftHgÅÍȺÌÅÏè`ÌDæxªÜèÜ·B
2.ðÅDæÉ·éÉÍAÏðè`·éÛÉoverride½ßðg¢Ü·B
3.ðÅDæÉ·éÉÍAmakeÌR}hCIvVÅ--environment-overrides (-e)ðwèµÜ·B
Ö¼ | àe | |
---|---|---|
$(filter p^[...,eLXg) | eLXgðóÅæØÁ½XgÆÝȵAp^[Æêvµ½àÌðÔ·i®Sêvj | |
$(filterout p^[..., eLXg) | p^[ÉêvµÈ¢àÌðÔ· | |
$(findstring ¶ñ,eLXg) | eLXgɶñðTµA©Â©êζñ©gA©Â©çËνàԳȢ | |
$(subst õ¶ñ,u·¶ñ,eLXg) | Pu·BóÉÓ | |
$(patsubst õp^[,u·p^[,eLXg) | ChJ[h(%)ªg¦éu· | |
$(Ï:õ¶ñ=u·¶ñ) | QÆu·BPêöɶݷéõ¶ñðu· | |
$(words eLXg) | eLXgÌPêðÔ· | |
$(word n, eLXg) | eLXgÌÔÚÌPêðÔ·(n>=1) | |
$(firstword eLXg) | eLXgÌÅÌPêðÔ· | |
$(wordlist Jn,I¹,eLXg) | eLXgÌJnÔÚ`I¹ÔÚÜÅÌPêñðÔ· | |
$(sort Xg) | d¡ðµ«É\[g | |
$(shell R}h) | ||
$(wildcard p^[...) | ||
$(dir Xg...) | fBNgª¾¯ðÔ· | |
$(notdir Xg...) | t@C¼ª¾¯ðÔ· | |
$(suffix ¼O...) | TtBbNXÌXgðìÁÄÔ· | |
$(basename ¼O...) | TtBbNXðæè¢½ªðÔ· | |
$(addsuffix TtBbNX,¼O...) | ¼OÉTtBbNXðÇÁ | |
$(addprefix vtBbNX,¼O...) | ¼OÉvtBbNXðÇÁ | |
$(join vtBbNXXg,TtBbNXXg) | dirÆnotdirðâ®·éðA»ê¼êÌXgÌ1ÔÚ¯mA2ÔÚ¯mAdðA | |
$(if ð,^ÌÆ«ÉÀs,UÌÆ«ÉÀs) | ||
$(error eLXg) | eLXg\¦ãAmakeÍI¹Xe[^X2ÅI¹·é | |
$(foreach Ï,Xg,Às) | ||
$(strip eLXg) | OãÌóíArÌóñð1ÂÌóÉu· | |
$(origin Ï) | ÏÌo©ðÔpBundefined | default | environment | environment-override | file | command-line | override | automatic | |
$(worning eLXg) | makeÍI¹µÈ¢ |
makeR}hÉAJgfBNgÈO©çt@CðT³¹é½ßÌdgÝÅ·B2ÂÌÝèû@ª èÜ·B
define¶ðgÁÄ¡sÌR}hÀsð}Nè`·é±ÆªÅ«Ü·B
define create-jar @echo Creating $@... $(RM) $(TMP_JAR_DIR) $(MKDIR) $(TMP_JAR_DIR) $(CP) -r $^ $(TMP_JAR_DIR) cd $(TMP_JAR_DIR) && $(JAR) $(JARFLAGS) $@ . $(JAR) -ufm $@ $(MANIFEST) $(RM) $(TMP_JAR_DIR) endef
±Ì}NðÀs·éÉÍAÊíÌÏÆ¯lÉÄÑoµÜ·B
$(UI-JAR): $(UI_CLASSES) $(create-jar)
}NÍøðº¤±ÆàūܷBdefineåÌÅÍA$1, $2, ...Ìæ¤ÉQƵܷB
ifdef, ifndef
ifdef COMSPEC PATH_SEP := ; else PATH_SEP := : endif
ifeq, ifneq