Makefile百分号登录规则无法识别

时间:2016-08-21 15:30:25

标签: makefile

我昨天刚开始学习GNU make。正如标题所示,似乎我的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/$@ $^

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
    $(CXX) -c -o $@ $<

控制台输出:

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 个答案:

答案 0 :(得分:2)

这条规则:

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
    $(CXX) -c -o $@ $<

不适合obj/main.o,因为没有src/main.h

(另外,请将必要的信息放在问题正文中,不要依赖图像的链接。)