Home
| Calendar
| Mail Lists
| List Archives
| Desktop SIG
| Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings Linux Cafe | Meeting Notes | Linux Links | Bling | About BLU |
My makefile is *mostly* working. My problem is this: I want to build a .o in a different directory from the current one, and it's being rather stubborn unless I spell out the rule. Imagine if you will, a makefile that can build target1, target2, and target3, and I'm adding troubletarget.o to it. Assume troubletarget.c is in the currect directory with everything else If I do: all: target1 target2 target3 troubletarget.o it builds fine. If I do: all: target1 target2 target3 ./troubletarget.o it builds fine. If I do: all: target1 target2 target3 ../otherdir/troubletarget.o I get "make: *** No rule to make target ../otherdir/troubletarget.o" which I can understand, because it doesn't know where the C file is. HOWEVER, if I do: all: target1 target2 target3 ../otherdir/troubletarget.o it simply does not try to build it at all. If I add a rule like: ../otherdir/troubletarget.o: troubletarget.c it still doesn;t attempt to build it. If I change that to ../otherdir/troubletarget.o: troubletarget.c $(CC) $(CFLAGS) -c $< -o $@ it works, but I don't see why I have to do that, since it already knows how to turn a .c into a .o, because earlier in the file I have .c.o: $(CC) $(CFLAGS) -c $< -o $@ which should build it fine, Note that I can't use the newer style %.o : %.c ; command... because the stem is different on the .o and the .c since they're in different directories. Does this make sense? What am I doing wrong? Thanks in advance.
BLU is a member of BostonUserGroups | |
We also thank MIT for the use of their facilities. |