Mail Archives: djgpp/2002/05/23/10:15:19.1
Hans-Bernhard Broeker wrote:
> Manni Heumann <manni DOT heumann AT gmx DOT de> wrote:
>> I've got a tiny little makefile that does what it is supposed
>> to do: compile the object files if needed and then build a
>> binary. Now I wanted to store all the .o files into a
>> subdirectory.
>
> You can do that, but you may buy yourself more trouble than it's
> worth. Currently, you're exploiting a lot of the built-in
> tricks make has been taught by its makers. What you're trying
> to do renders many of those tricks invalid, and you'll have to
> reinvent them.
Playing around with the new makefile I created from your and Eli's
information, I got a pretty good picture of what you mean.
> At the minimum, you'ld have to put the name of that subdirectory
> in front of every single .o file name in your OBJECTS list.
> That alone is cumbersome enough to make the whole plan
> questionable, I'd say.
Well, it's not very elegant. But I guess I could live with that.
> Next, you'ld have to change your pattern rule to name the .o
> files' directory, too. And that may well break it --- pattern
> rules are usually meant to match from the start of a relative
> pathname, not somewhere in the middle of it.
Again, I guess I did experience the troubles you predicted.
> An alternative method that might work: run make from inside the
> .o files' directory, using the makefile in the actual source
> directory, and then use VPATH to let it find the sources, i.e.:
>
> ODIR = odir
>
> all: program
>
> program: all-objects
>
> .PHONY: all-objects
> all-objects:
> $(MAKE) -C $(ODIR) -f ../Makefile VPATH=.. $(OBJECTS)
Hmm. I still have to try this one. Sounds very interesting and I will
give it a try.
Thanks,
Manni
- Raw text -