2016-05-20 6 views
0

Ich habe folgende Make-Datei, die gut funktioniert, ich wollte nur sehen, ob es möglich ist, weiter so Make-Datei zu optimieren:Optimierung des folgenden machen Datei

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 

ich die Rezepte test1, test2 und test3 sehen sind im Grunde die gleichen, gibt es eine Möglichkeit, sie in einer einzigen Zeile zusammenzufassen?

+0

Warum geben Sie in ein separates Verzeichnis 'Debug' aus? Möchten Sie letztendlich Debug- und Nicht-Debug-Versionen haben? Warum verwendest du keine separate Kompilierung? – user657267

+0

"Ich habe das folgende Makefile ..." Ist das * wirklich * es? Wenn nicht die echte Post, so können wir sehen, auf welche Weise die Rezepte tatsächlich ähnlich sind. –

+0

@ user657267, Nur weil ich lernen wollte, wie man ein Makefile verwendet, um verschiedene Projekte zu kompilieren, hat jedes Projekt eigene Debug-Sachen usw., es ist nur ein Beispiel-Makefile, nichts Professionelles. – user8469759

Antwort

0

einfach kombinieren Sie Ihre test1 2 und 3 zusammen als die Regel am Ende so etwas wie folgt zu verwenden:

cp your_binary folder 

Auch beim nächsten Mal versuchen, Dateien mit .o zu kompilieren statt .c während der Kompilierung durch den Einsatz diese Regel:

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

Was meinen Sie, wenn Sie test1,2 und 3 zusammen kombinieren? – user8469759

Verwandte Themen