我对 Makefiles 非常陌生,我目前正在尝试在我开始的项目上构建我的第一个。
我遇到的问题是让它自动知道如何处理我所有的 .cpp 文件,而无需为每个文件定义规则。
我还希望我的目标文件都放在一个文件夹中,在这种情况下是$(PLATFORM)/obj
/ where 。PLATFORM=win32
以下是我用于 Makefile 的内容,使用 mingw32-make.exe 执行它
CXX=g++
CXXFLAGS=-c -Wall -DALLEGRO_STATICLINK
LDFLAGS=
PLATFORM=win32
SOURCES=main.cpp
EXECUTABLE=app.exe
OBJDIR=$(PLATFORM)/obj/
OBJECTS= $(SOURCES:%.cpp=$(OBJDIR)%.o)
all: $(EXECUTABLE)
%.o: %.c
$(CXX) $(CXXFLAGS) $< -o $@
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(OBJECTS) $(LDFLAGS) -o $(EXECUTABLE)
我收到错误:
mingw32-make: *没有规则来制作目标
win32/obj/main.o', needed by
app.exe' 。停止。
我不确定我做错了什么,我一直在查看其他 makefile 示例,它们似乎具有相似的结构,所以我不确定我的问题是什么。我正在寻找为什么会发生这种情况的解释,以及如何解决它的建议。
此外,对我的风格的任何评论,使其更干净/标准化的建议也会很棒。在学习制作 makefile 时,我想确保自己学习得当。
谢谢