2016-04-23 14 views
0

Ich habe eine Make-Datei, die wie folgt aussieht:Wie mit einem beliebigen Satz von Quelldateien in Make arbeiten?

SRCS :=   $(wildcard *.cpp) 
OBJS :=   $(patsubst %.cpp, %.o, $(SRCS)) 
TARGET :=  foo 
default :  $(TARGET) 
%.o : %.cpp %.h 
    $(CXX) $(CXXFLAGS) $< -o [email protected] 
$(TARGET) :  $(OBJS) 
    $(CXX) $(LDFLAGS) $^ -o $(TARGET) 

Dies setzt voraus, alle Quelldateien, die ich brauche, sind an der gleichen Stelle.
Was soll ich tun, wenn die Dateien, die ich erstellen möchte, (foo.cpp ../bar.cpp ../../xip/bas.cpp) sind?

Antwort

0

Sie benötigen VPATH, 4.5.1 VPATH: Search Path for All Prerequisites, Plus $(notdir ...)8.3 Functions for File Names

Wenn Ihre Quelldateien waren, wie Sie vorschlagen foo.cpp, ../bar.cpp, ../../xip/bas.cpp) dann würde Ihr Make-Datei wie folgt aussehen:

VPATH := ..:../../xip/ 
SRCS :=   $(notdir foo.cpp ../bar.cpp ../../xip/bas.cpp) 
OBJS :=   $(patsubst %.cpp, %.o, $(SRCS)) 
TARGET :=  foo 
default :  $(TARGET) 
%.o : %.cpp %.h 
    $(CXX) $(CXXFLAGS) $< -o [email protected] 
$(TARGET) :  $(OBJS) 
    $(CXX) $(LDFLAGS) $^ -o $(TARGET)