2016-08-21 25 views
0

昨天剛剛開始學習GNU make。正如標題所說,看起來我的Makefile中的%符號沒有被識別。或者我可能以錯誤的方式使用它。有人能夠啓發我嗎?Makefile百分號登錄規則不被識別

CXX = clang++ 
EXE = Invaders 

SDL = -F./lib 
LDFLAGS = $(SDL) 

SRCDIR = src 
OBJDIR = obj 

SRC = $(SRCDIR)/main.cpp $(wildcard $(SRCDIR)/util/*.cpp) $(wildcard $(SRCDIR)/misc/*.cpp) 
OBJ = $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SRC)) 

all: $(EXE) 

$(EXE): $(OBJ) 
    $(CXX) $(LDFLAGS) -o bin/[email protected] $^ 

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h 
    $(CXX) -c -o [email protected] $< 

控制檯輸出:

make: *** No rule to make target `obj/main.o', needed by `Invaders'. Stop. 

Tree view of my entire project with directories /obj and /src expanded

謝謝!

回答

1

這條規則:

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h 
    $(CXX) -c -o [email protected] $< 

不適合obj/main.o,因爲沒有src/main.h

(另外,請在問題的正文中加上必要的信息,不要依賴於圖像的鏈接。)