2016-05-20 33 views
0

我有以下生成文件,工作正常,我只是想看看是否有可能進一步優化這樣的Makefile:優化下面讓文件

CC=gcc 
FLAGS=-lm -std=c99 
PROJECT1_FOLDER=./Project1/ 
PROJECT2_FOLDER=./Project2/ 
PROJECT3_FOLDER=./Project3/ 
DEBUG1=$(PROJECT1_FOLDER)Debug/ 
DEBUG2=$(PROJECT2_FOLDER)Debug/ 
DEBUG3=$(PROJECT3_FOLDER)Debug/ 

all : test1 test2 test3 
.PHONY : all 
.PHONY : clean 

test1 : $(addprefix $(PROJECT1_FOLDER), src1.c header1.h main.c) 
    $(CC) $(addprefix $(PROJECT1_FOLDER), src1.c main.c) -I$(PROJECT1_FOLDER) -o $(DEBUG1)test1 

test2 : $(addprefix $(PROJECT2_FOLDER), src2.c header2.h main.c) 
    $(CC) $(addprefix $(PROJECT2_FOLDER), src2.c main.c) -I$(PROJECT2_FOLDER) -o $(DEBUG2)test2 

test3 : $(addprefix $(PROJECT3_FOLDER), src3.c header3.h main.c) 
    $(CC) $(addprefix $(PROJECT3_FOLDER), src3.c main.c) -I$(PROJECT3_FOLDER) -o $(DEBUG3)test3 

clean : 
    rm $(DEBUG1)test1 $(DEBUG2)test2 $(DEBUG3)test3 

我可以看到食譜TEST1,TEST2和TEST3基本上是一樣的,有沒有辦法將它們摺疊成一行?

+0

你爲什麼要輸出到一個單獨的'Debug'目錄?你最終打算有調試版和非調試版嗎?你爲什麼不使用單獨的編譯? – user657267

+0

「我有以下makefile文件......」這是*真的嗎?如果不是發佈 真實的那個,那麼我們可以看到配方實際上相似的方式。 –

+0

@ user657267,只是因爲我想學習如何使用makefile來編譯不同的項目,每個項目都有自己的調試內容等,這只是一個示例makefile而已。 – user8469759

回答

0

只要結合您的test1的2和3比一起使用這樣的事情在最後您的規則:

cp your_binary folder 

而且下一次,試試你的編譯過程中使用的.o文件,而不是.C通過編譯這條規則:

OBJS = $(SRCS:.c=.o) ## SRCS are your .c files 
+0

將test1,2和3結合在一起是什麼意思? – user8469759