我有一个看起来像这样的makefile:
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 ../bar.cpp ../../xip/bas.cpp),我该怎么办?
答案 0 :(得分:0)
您需要$(notdir ...)
,4.5.1 VPATH: Search Path for All Prerequisites,
加foo.cpp
8.3 Functions for File Names
如果您的源文件符合您的建议../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)
然后你的makefile看起来像:
Select Case