使用我的Makefile,我试图让我的所有对象和二进制文件最终都在Release目录中。似乎我尝试过的每一种情况都有一些错误,所以我要求一些帮助。这就是我所拥有的,我需要知道如何改变它。感谢。
BUILDDIR = Release
CXXFLAGS = -O2 -g -Wall -fmessage-length=0
LDFLAGS=
HEADERS = $(wildcard *.h)
SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o)
LIBS =
EXECUTABLE= MyProgram
all: $(HEADERS) $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(LDFLAGS) $(OBJECTS) -o $@
clean:
rm -f $(OBJECTS) $(EXECUTABLE)
答案 0 :(得分:0)
修改这些行,如下所示:
OBJECTS := $(SOURCES:%.cpp=$(BUILDDIR)/%.o)
EXECUTABLE := $(BUILDDIR)/MyProgram
然后有两个选择。第一种是使用vpath
来定位需要编译成对象的源。第二种是使用显式模式规则:
$(BUILDDIR)/%.o : ./%.cpp
$(CXX) $(CXXFLAGS) -o $@ -c $<