问题描述
|
我是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文件更简洁,更短,更灵活,但是它们是高级技术。