2016-04-23 7 views
0

У меня есть Makefile, который выглядит следующим образом:Как работать с произвольным набором исходных файлов в Make?

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) 

Это предполагает, что все исходные файлы, которые мне нужны находятся в том же месте.
Что делать, если файлы, которые я хочу создать, (foo.cpp ../bar.cpp ../../xip/bas.cpp)?

ответ

0

Вам нужно VPATH, 4.5.1 VPATH: Search Path for All Prerequisites, плюс $(notdir ...)8.3 Functions for File Names

Если исходные файлы были, как вы предлагаете foo.cpp, ../bar.cpp, ../../xip/bas.cpp) тогда ваш Makefile будет выглядеть так:

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) 
Смежные вопросы