从Makefile重定向我的输出

时间:2012-04-28 20:19:33

标签: makefile g++ gnu-make


使用我的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)

1 个答案:

答案 0 :(得分:0)

修改这些行,如下所示:

OBJECTS := $(SOURCES:%.cpp=$(BUILDDIR)/%.o)

EXECUTABLE := $(BUILDDIR)/MyProgram

然后有两个选择。第一种是使用vpath来定位需要编译成对象的源。第二种是使用显式模式规则:

$(BUILDDIR)/%.o : ./%.cpp
    $(CXX) $(CXXFLAGS) -o $@ -c $<