Cygwin和makefile

问题描述

| 我是makefile的新手,并且正在使用Cygwin制作文件。我的源文件位于三个不同的目录中,我使用VPATH技术对其进行了编译,但目标文件在当前目录中生成。 我希望所有目标文件都在一个目录中生成 和目标文件在其他目录中。 [也就是其他目录中的.mk文件]我该怎么做?如何告诉编译器在指定目录中生成它们? 这是我的程序:
vpath %.c bad good ugly
    gcc $(CFLAGS)   -c  $<  -o  $@
gola:goka.o foka.o hoka.o
    gcc $^  -o  $@
goka.o:goka.c
    gcc -c  $<
foka.o:foka.c
    gcc -c  $<
hoka.o:hoka.c
    gcc -c  $<
如何将所有目标文件放在一个目录中,而
gola
[mk]文件放在指定目录中?     

解决方法

        您没有说出这些文件的位置(我对您所说的“ mk文件”一无所知),但这会将目标文件放在in2ѭ中,并在
bin/
中构造
gola
vpath %.c bad good ugly
#    gcc $(CFLAGS)   -c  $<  -o  $@ this line makes no sense                    

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

bin/gola: $(OBJECTS)
    gcc $^  -o  $@

$(OBJECTS): obj/%.o : %.c
    gcc -c  $< -o $@
有一些方法可以使makefile文件更简洁,更短,更灵活,但是它们是高级技术。