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 $<