我有一个看起来像这样的生成文件:
SRCS := $(wildcard *.cpp)
OBJS := $(patsubst %.cpp, %.o, $(SRCS))
TARGET := foo
default : $(TARGET)
%.o : %.cpp %.h
$(CXX) $(CXXFLAGS) $< -o $@
$(TARGET) : $(OBJS)
$(CXX) $(LDFLAGS) $^ -o $(TARGET)
这假设我需要的所有源文件都在同一位置。
如果我要构建的文件是(foo.cpp.,我该怎么办。/酒吧.cpp ../../xip/bas.cpp ) ?
你需要VPATH
, 4.5.1 VPATH:搜索所有先决条件的路径,加上$(notdir ...)
8.3 文件名函数
如果您的源文件如您所建议的foo.cpp
、../bar.cpp
、../../xip/bas.cpp )
然后,您的生成文件将如下所示:
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 $@
$(TARGET) : $(OBJS)
$(CXX) $(LDFLAGS) $^ -o $(TARGET)