2011-06-15 28 views
2

我是makefiles的新手,我使用Cygwin来创建我的文件。我有三个不同目录中的源文件,我使用VPATH技术编译它们,但目标文件在当前目录中生成。Cygwin和makefiles

我想要在一个目录 中生成所有目标文件,并在其他目录中生成目标文件。 [也就是,其他目录中的.mk文件]我该怎么做?我如何告诉编译器在指定的目录中生成它们?

这里是我的程序:

vpath %.c bad good ugly 
    gcc $(CFLAGS) -c $< -o [email protected] 
gola:goka.o foka.o hoka.o 
    gcc $^ -o [email protected] 
goka.o:goka.c 
    gcc -c $< 
foka.o:foka.c 
    gcc -c $< 
hoka.o:hoka.c 
    gcc -c $< 

我如何把一个目录中的所有目标文件和gola [MK]文件中指定的目录?

回答

1

你还没有说要将这些文件(我不能弄明白你说的关于“MK文件”什么的),但这将投入obj/目标文件,构建golabin/

vpath %.c bad good ugly 
# gcc $(CFLAGS) -c $< -o [email protected] this line makes no sense      

OBJECTS = obj/goka.o obj/foka.o obj/hoka.o 

bin/gola: $(OBJECTS) 
    gcc $^ -o [email protected] 

$(OBJECTS): obj/%.o : %.c 
    gcc -c $< -o [email protected] 

有办法使makefile更简洁,更短,更灵活,但它们是高级技术。