bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A problem in Makefile


From: ARPITA SAXENA
Subject: Re: A problem in Makefile
Date: Wed, 05 Jun 2002 10:05:28 +0500

Hi Henning,

    Yes, I feel something is missing .  Actually, there is a cvs repository on
the machine where this makefile 'Makefile_rm' lies . The path is represented by
the keyword 'CVSROOT' used in 'Makefile_rm' . This cvs export command brings a
copy of the specified file (either .h or .cpp ) from the cvs repository into my
working directory . Once the dependency files are in my working directory, the
compilation & thereafter linking is invoked . The command 'cvs update' will
only let me see the status of the files in my working directory ( status can be
M - modified, C - conflict, A - added, R - removed etc) .
    Now, Henning, can you please send me your feedback.
    I am attaching my makefile 'Makefile_rm' again.


Arpita .

Henning Makholm wrote:

> Scripsit ARPITA SAXENA <address@hidden>
>
> >         I have made a makefile 'Makefile_rm' . While invoking it's all
> > target, everything workis fine except that at the end an 'rm ' command
> > is invoked for all the .cpp files using the '%.o' default rule .
>
> That sounds like the standard, documented, make behavior: If a file is
> never mentioned by its complete name in any rule and it doesn't
> already exist, make will deem it an "intermediate file" that you don't
> really want to have lying around between makes.
>
> Look at the node "Chained Rules" in the make manual, or search for the
> description ".PRECIOUS" pseudo-target.
>
> > $(MODULE)/src/%.h : $(CVSROOT)/$(MODULE)/src/%.h,v
> >       cvs export -r $(TAG) $@
> >       touch $@
> > $(MODULE)/src/%.cpp : $(CVSROOT)/$(MODULE)/src/%.cpp,v
> >       cvs export -r $(TAG) $(MODULE)/src/$(*F).cpp
> >       touch $@
>
> By the way, this looks like a really roundabout way of doing something
> that could be accomplished just by saying
>
> all : cvs_update TlWsPPFend TlWsPPDaemon
> .PHONY: cvs_update
> cvs_update:
>         cvs update
>
> Or am I missing something?
>
> --
> Henning Makholm                        "I ... I have to return some videos."
CVSROOT=/subsyscvs/toolcms/toolcvs
MODULE=privatepatch
TAG=TEST_ARP

SCRIPTS = TlWsBackupRestoreScript TlWsRestartTerminateScript TlWsSetEnvScript 
history status

FRONTEND = pp_global.o ppFend_main.o ppFend_Reset.o ppFend_PatchInstall.o  
ppFend_PatchDeinstall.o ppFend_ExistingRestart.o

DAEMON = pp_global.o ppDaemon_main.o ppDaemon_UpdateDaemon.o

HLIST = pp_const.h pp_global.h ppFend_main.h ppDaemon_main.h


all : TlWsPPFend TlWsPPDaemon


$(MODULE)/src/%.h : $(CVSROOT)/$(MODULE)/src/%.h,v
        cvs export -r $(TAG) $@
        touch $@

$(MODULE)/src/%.cpp : $(CVSROOT)/$(MODULE)/src/%.cpp,v
        cvs export -r $(TAG) $(MODULE)/src/$(*F).cpp
        touch $@


pp_global.o : $(MODULE)/src/pp_const.h $(MODULE)/src/pp_global.h 
$(MODULE)/src/pp_global.cpp
        g++ -c $(MODULE)/src/$(*F).cpp -o ./$@ -I ../../stl

ppFend_main.o : $(MODULE)/src/ppFend_main.h $(MODULE)/src/ppFend_main.cpp
        g++ -c $(MODULE)/src/$(*F).cpp -o ./$@ -I ../../stl

ppDaemon_main.o : $(MODULE)/src/ppDaemon_main.h $(MODULE)/src/ppDaemon_main.cpp
        g++ -c $(MODULE)/src/$(*F).cpp -o ./$@ -I ../../stl

%.o : $(MODULE)/src/%.cpp
        g++ -c $(MODULE)/src/$(*F).cpp -o ./$@ -I ../../stl


TlWsPPFend : $(FRONTEND)
        g++ -o TlWsPPFend $(FRONTEND)

TlWsPPDaemon : $(DAEMON)
        g++ -o TlWsPPDaemon $(DAEMON)


clean : FRONTEND_clean DAEMON_clean MODULE_clean

FRONTEND_clean :
        rm TlWsPPFend 

DAEMON_clean :
        rm TlWsPPDaemon 

MODULE_clean :
        rm -Rf $(MODULE)
        rm -f *.o

reply via email to

[Prev in Thread] Current Thread [Next in Thread]