2011-06-15 65 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更簡潔,更短,更靈活,但它們是高級技術。