2012-04-28 47 views
0


   用我的Makefile我的输出,我试图让我所有的我的对象和二进制文件的版本目录中结束。似乎我尝试过的每个变化都有一些错误,所以我在寻求一些帮助。这是我所拥有的,我需要知道如何改变它。谢谢。重定向从一个Makefile

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 [email protected] 

clean: 
     rm -f $(OBJECTS) $(EXECUTABLE) 

回答

0

修改这些线路如下:

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

EXECUTABLE := $(BUILDDIR)/MyProgram 

这时有两种选择。首先是使用vpath来定位需要编译到对象中的源。第二种是使用明确的模式规则:

$(BUILDDIR)/%.o : ./%.cpp 
    $(CXX) $(CXXFLAGS) -o [email protected] -c $<