%% Andrea Riciputi <[EMAIL PROTECTED]> writes: ar> I've a C source code divided among several files in a single ar> directory (~/Project), I'd like to put all the object files in a ar> different sub-directory (let say ~/Project/obj). I've tried ar> something like this:
ar> CCompiler = cc ar> CFLAGS = -g -O2 -Wno-long-double -I/sw/include ar> LDFLAGS = -L/sw/lib -lgsl -lm ar> CurrentDir = ~/Project ar> SourceDir = $(CurrentDir) ar> ObjectDir = $(CurrentDir)/obj So, SourceDir is the string "~/Project" and ObjectDir is the string "~/Project/obj" (sans quotes of course). ar> AllFiles = $(wildcard *) I agree with the other comments, using wildcard like this is not, IMO, a robust and reliable way to construct makefiles. Have your users list the files they want to build explicitly in the makefile. It doesn't take much time, esp. considering how rare it is (considering the whole life of a project) to create a new file. And it's much safer (what if someone makes a little .c file just to test something?) ar> ObjectFiles = $(patsubst %.c,$(ObjectDir)/%.o,$(SourceFiles)) After this, ObjectFiles contains strings like "~/Project/obj/foo.o", etc. ar> $(ObjectDir)%.o: $(SourceDir)%.c OK, so this line expands to: ~/Project/obj%.o: ~/Project%.c which seems suspicious to me. Try adding in the slashes and see if that works better: $(ObjectDir)/%.o: $(SourceDir)/%.c You might also try using the explicit variable $(HOME) rather than relying on tilde expansion, just to see if that helps. ar> I've tried several other methods (including vpath %.o /obj) but it ar> seems that none of them work. How can I get what I want? VPATH won't help you; that's not what it's for. See my site below for some tips on how (and how not) to use VPATH. -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Help-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/help-make
