[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
Hej >Det virker fint. Men der er et lille problem; hvis man skriver "make default" >går den i uendelig løkke. Det lyder måske ikke som et stort problem, men når >man har to targets der afhænger af "sub" og man ikke altid vil compile begge >targets er man lidt på spanden. "That's the spirit": At noget ikke terminerer er "ikke et stort problem"! hvis du ændrer rule'en: >linux : $(SUBS) > $(MAKE) linux_ $(MAKECMDGOALS) til linux : $(SUBS) $(MAKE) linux_ (og tilsvarende for rule'en dos) (Jeg mener dog at der skulle være en "elegantere" måde at sætte goals for rekursive kald på -- men skam at melde har jeg ikke fået det undersøgt). Så *burde* den uendelige rekursivitet være humlet. Nils Åke Ljunggren sslug@sslug (Anders Bo Rasmussen) 04-08-00 11:51 Please respond to sslug-cprog To: sslug@sslug cc: Subject: Re: [CPROG] Makefile On Tue, 1 Aug 2000 22:57:28 +0200, sslug@sslug <sslug@sslug> wrote: >Jeg er ny til Lotus Notes s=E5 b=E6r over med mig: >GNU make har jeg imidlertid brugt siden '95: > >En mere-eller-mindre "beskidt" mulighed: >(idet jeg foruds=E6tter at dependencies bliver *processed* f=F8r commands = > >selv med parameteren -j)?: Det gør de. Ellers ville man jo begynde at lave redundante programudførelser. >#Makefile semi-sequential example >#title is merly indicative > >.PHONY: default local=5Fglobal=5Fsub=5Fdependt=5Ftargets sub > >default: sub > make local=5Fglobal=5Fsub=5Fdependt=5Ftargets > >local=5Fglobal=5Fsub=5Fdependt=5Ftargets: $(local=5Fglobal=5Fdefault=5Ftarg= >ets) > >sub: > [$(make=5Fsub=5Fad=5Flib=5Flisting)] > >#END Makefile semi-sequential example > >For en god ordens skyld: Jeg har ikke afpr=F8vet ovenn=E6vnte eksempel Det virker fint. Men der er et lille problem; hvis man skriver "make default" går den i uendelig løkke. Det lyder måske ikke som et stort problem, men når man har to targets der afhænger af "sub" og man ikke altid vil compile begge targets er man lidt på spanden. Jeg kommer lige med mit eksempel, hvis ovenstående ikke er klart. De to targets er linux og dos. CXXFLAGS= -O2 -Wall -g DEPENDFLAGS = -M DOSCXX = i386-pc-msdosdjgpp-c++ DOSAR = i386-pc-msdosdjgpp-ar DOSCXXFLAGS = -O2 -Wall -Wno-uninitialized -msoft-float DOSLIB= $(LIB:.a=dos.a) OBJS = $(OBJSRC:.cpp=.o) EXEOBJS = $(EXESRC:.cpp=.o) EXES = $(EXESRC:.cpp=) DOSOBJS = $(OBJSRC:.cpp=.doso) DOSEXEOBJS = $(EXESRC:.cpp=.doso) DOSEXES = $(EXESRC:.cpp=.exe) ALLSRC = $(OBJSRC) $(EXESRC) DEPENDS = $(ALLSRC:.cpp=.dep) DOSDEPENDS = $(ALLSRC:.cpp=.dosdep) .PHONY: clean linux veryclean dos $(SUBS) linux_ dos_ linux : $(SUBS) $(MAKE) linux_ $(MAKECMDGOALS) linux_: $(LIB) $(EXES) $(DEPENDS) dos: $(SUBS) $(MAKE) dos_ $(MAKECMDGOALS) dos_ : $(DOSLIB) $(DOSEXES) $(DOSDEPENDS) veryclean: clean $(SUBS) $(RM) $(EXES) $(LIB) $(DOSEXES) $(DOSLIB) clean: $(RM) $(EXEOBJS) $(OBJS) $(DEPENDS) $(DOSEXEOBJS) $(DOSOBJS) $(DOSDEPENDS) %.o: %.cpp $(CXX) $(CXXFLAGS) $(COMPILE_FLAGS) -c $< -o $@ %.doso: %.cpp $(DOSCXX) $(DOSCXXFLAGS) $(DOS_COMPILE_FLAGS) -c $< -o $@ $(LIB): $(OBJS) ar r $@ $? $(DOSLIB): $(DOSOBJS) $(DOSAR) r $@ $? $(EXES): % : %.o $(OBJS) $(LIBS) $(CXX) $(CXXFLAGS) $< $(OBJS) $(LINK_FLAGS) $(LIBS) -o $@ $(DOSEXES): %.exe : %.doso $(DOSOBJS) $(DOSLIBS) $(DOSCXX) $(DOSCXXFLAGS) $< $(DOSOBJS) $(DOSLIBS) $(DOS_LINK_FLAGS) -o $@ upx -1 $@ $(DEPENDS): %.dep : %.cpp $(CXX) $(CXXFLAGS) $(DEPENDFLAGS) $(COMPILE_FLAGS) -c $< > $@ $(DOSDEPENDS): %.dosdep : %.cpp $(DOSCXX) $(DOSCXXFLAGS) $(DEPENDFLAGS) $(DOS_COMPILE_FLAGS) -c $< \ | sed s/$*.o/$*.doso/ > $@ $(SUBS): $(MAKE) -C $@ $(MAKECMDGOALS) include $(DEPENDS) include $(DOSDEPENDS) -- Anders Bo Rasmussen mailto:sslug@sslug Frimestervej 42 1.tv http://www.image.dk/~abr 2400 Kbh. NV Denmark
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |