This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: g++ -MM -MT


I personaly write something like that:
g++ -MM -MF depcpp.dep -MT ../../directory/c.o c.cpp

----
Lev Assinovsky
Aelita Software Corporation
O&S InTrust Framework Division, Team Leader
ICQ# 165072909


> -----Original Message-----
> From: Stephen Bianchi [mailto:swbianchi@earthlink.net]
> Sent: Friday, November 28, 2003 2:31 AM
> To: gcc-help@gcc.gnu.org
> Subject: g++ -MM -MT
> 
> 
> This is great (see below), but is there a way to write out 
> the rule as:
> ../../directory/c.o: c.cpp
> 
> I want to keep the object files in a separate directory from 
> the source 
> files.
> 
> Thank you.
> 
> --------------------------------------------------------------
> -----------
> Nevermind. It's as easy as replacing the Makefile line:
> 
> $(CPP) -MM $(CPPFLAGS) `echo $$i | sed 
> "s/\(.*\)\\.o$$/\1.cpp/"` >> depend
> 
> with:
> 
> $(CPP) -MM -MT $$i $(CPPFLAGS) `echo $$i | sed 
> "s/\(.*\)\\.o$$/\1.cpp/"` 
>  >> depend
> 
> Sorry for the spam :)
> 
> On Wednesday 30 July 2003 12:17, Mihnea Balta wrote:
>  > As a side note, these two manual entries seem conflicting:
>  >
>  > The entry for the -M flag says:
>  > "The preprocessor outputs one make rule containing the object file 
> name for
>  > that source file, a colon, and the names of all the 
> included files [...]"
>  >
>  > The entry for the -MT flag says:
>  > "By default CPP takes the name of the main input file, 
> _including any
>  > path_, deletes any file suffix such as .c, and appends the 
> platform's 
> usual
>  > object suffix. The result is the target."
>  >
>  > On Wednesday 30 July 2003 12:09, Mihnea Balta wrote:
>  > > Hello,
>  > >
>  > > I want to implement an automated system that generates dependency
>  > > information for my project's sources. I've used the 
> standard technique:
>  > >
>  > > OBJS=a.o b.o ../../directory/c.o
>  > >
>  > > ...
>  > >
>  > > dep:
>  > > 	/bin/rm -f depend
>  > > 	for i in $(OBJS); do \
>  > > 		$(CPP) -MM $(CPPFLAGS) `echo $$i | sed 
> "s/\(.*\)\\.o$$/\1.cpp/"` >>
>  > > depend;\ done
>  > >
>  > > ifeq (depend,$(wildcard depend))
>  > > include depend
>  > > endif
>  > >
>  > > The problem with this approach is that the following line:
>  > > g++ -MM ../../directory/c.cpp
>  > > outputs the following make rule:
>  > > c.o: ../../directory/c.cpp
>  > >
>  > > I would like it to output the rule as:
>  > > ../../directory/c.o: ../../directory/c.cpp
>  > >
>  > > Is there any way to do this with a g++ switch (I 
> couldn't find one 
> in the
>  > > manual), or do I have to write my own utility to perform that 
> conversion?
>  > >
>  > > Thanks in advance.
>  > >
> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]