help-make
[Top][All Lists]
Advanced

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

Re: flat OBJDIR


From: Alexander Farber
Subject: Re: flat OBJDIR
Date: Tue, 24 Aug 2004 16:35:33 +0000
User-agent: Mutt/1.4.1i

Hi Ken,

yes, I was going to replicate the directory structure of my 
sources, but later. Currently I want the destination of 
my objects to match the one of the original scripted build 
system, since it is rather large (a 60 MB big log file) and
I have to compare and verify the produced files...

Do you have an error in your "testcase"? It fails for me:

bolinux72:afarber {529} gmake -f Makefile2
gmake: *** No rule to make target `objdir/a.obj', needed by `all'.  Stop.

bolinux72:afarber {530} cat Makefile2 
OBJDIR = objdir
OBJSUBDIRS = $(addprefix $(OBJDIR)/,$(dir $(SRCS)))
SRCS = a.cpp \
       src1/b.cpp
OBJS = $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.obj))

all: $(OBJS)

$(OBJDIR) $(OBJSUBDIRS):
        mkdir -p $(@)

$(OBJDIR)/%.obj: %.cpp | $(OBJDIR) $(OBJSUBDIRS)
        g++ -o $@ -c $<




On Mon, Aug 23, 2004 at 12:18:18PM -0400, Ken Smith wrote:
> On Mon, Aug 23, 2004 at 04:38:52PM +0000, Alexander Farber wrote:
> > OBJS = $(addprefix $(OBJDIR)/, $(notdir $(SRCS:.cpp=.obj)))
> 
> Instead of trying to build all the objects into a single directory,
> could you replicate the directory structure of your sources in your
> object directory?  For example, your object directory could look like
> 
> objdir/a.obj
> objdir/src1/b.cpp
> 
> You would define OBJS like this.
> 
> OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.cpp=.obj))
> 
> I assume that the object directory is dynamically created or, at least
> that you don't have the same directory structure there that you have in
> your source directory.  You can overcome this as follows.  The following
> is a modified version of your test makefile which implements this
> suggestion.
> 
> OBJDIR = objdir
> OBJSUBDIRS = $(addprefix $(OBJDIR)/,$(dir $(SRCS)))
> SRCS = a.cpp \
>        src1/b.cpp
> OBJS = $(addprefix $(OBJDIR)/,$(SRCS:.cpp=.obj))
> 
> all: $(OBJS)
> 
> $(OBJDIR) $(OBJSUBDIRS):
>       mkdir -p $(@)
> 
> $(OBJDIR)/%.obj: %.cpp | $(OBJDIR) $(OBJSUBDIRS)
>       g++ -o $@ -c $<
> 
> -- 
> Ken Smith
> 




reply via email to

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