子目录中的makefile对象

子目录中的makefile对象,makefile,Makefile,我被要求在gcc上编译我的VC++代码,并得到一个makefile,它应该在这个make文件目录的子目录中编译我的代码。问题是在子目录中查找对象文件,但输出到makefile dir。我想我需要在“-o”中添加一些东西,但我在这里的深度不够 include ../makefile.common CCFLAGS += -I. -I../general -L../general HEADERS := $(wildcard *.h) $(wildcard */*.h) SRCS := $(wil

我被要求在gcc上编译我的VC++代码,并得到一个makefile,它应该在这个make文件目录的子目录中编译我的代码。问题是在子目录中查找对象文件,但输出到makefile dir。我想我需要在“-o”中添加一些东西,但我在这里的深度不够

include ../makefile.common

CCFLAGS += -I. -I../general -L../general

HEADERS := $(wildcard *.h) $(wildcard */*.h)

SRCS := $(wildcard *.cpp) $(wildcard */*.cpp)

OBJS=$(SRCS:.cpp=.o)

DEPS=$(SRCS:.cpp=.d)

EXE=k2csv

default: $(EXE)

all: $(EXE)

$(EXE): $(OBJS) ../general/lib2csgeneral.a
    # ( cd ../general ; make ; )
    $(CPP) $(CCFLAGS) -o $(EXE) $(OBJS) -l2csgeneral -lmh -lm -pthread $(LDEFS)

clean:
    rm -f $(OBJS) $(DEPS) $(EXE)

ifneq "$(MAKECMDGOALS)" "clean"
sinclude $(DEPS)
endif

如果我复制对象文件,代码就会编译,但这仍然让我感到厌烦。谢谢你的帮助

似乎我需要为我的输出添加一个规则。这解决了我的问题:

%.o: %.cpp
$(CPP) $(CCFLAGS) -c $< -o $@
%.o:%.cpp
$(CPP)$(CCFLAGS)-c$<-o$@
$
$(CPP)
扩展为
$(CC)-E
。您想要的是
$(CXX)
CCFLAGS
也应该是
CPPFLAGS
(因为
-I
标志是预处理器标志)。