0


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

1 回答 1

0

修改这些行如下:

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

EXECUTABLE := $(BUILDDIR)/MyProgram

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

$(BUILDDIR)/%.o : ./%.cpp
    $(CXX) $(CXXFLAGS) -o $@ -c $<
于 2012-04-28T21:04:39.803 回答