make: *** 没有创建目标 `obj/main.o' 的规则。停止
make: *** No rule to make target `obj/main.o'. Stop
我正在处理一个 SDL 项目,我正在为该项目使用 makefile 来构建它。我在 windows 上用 MinGW w64 编译器和 make 做这个。
我的项目结构是这样的
proj
------>bin #stores the executable
------>include #stroes the external library include files
------>lib #stores the lib files of the libraries
------>obj #stores the .o files
------>src #source files
makefile
我的 makefile 看起来像这样
CC = g++
OUT = main
ODIR = ./obj
SDIR = ./src
OUTDIR = ./bin
IDIR = ./include
LDIR = ./lib
libs = -lmingw32 -lSDL2main -lSDL2
OBJS = $(patsubst $(SDIR)/%.cpp,$(ODIR)/%.o,$(wildcard $(SDIR)/*.cpp))
$(ODIR)/%.o : $(SDIR)/%.cpp
$(CC) -c -I $(IDIR) -o $@ $^
$(OUTDIR)/% : $(OBJS)
$(CC) -L $(LDIR) -o $@ $^ $(libs)
.PHONY : run
run :
$(OUTDIR)/$(OUT)
最初,makefile 工作得很好,在我通过编辑 src 变量编辑 makefile 然后取消它之后,make 文件给出了错误
make ./obj/main.o
make: *** No rule to make target `obj/main.o'. Stop.
我尝试将文件重命名为 MakeFile 或 a.mk 并尝试 运行 它,但即使那样也无济于事。
那么我应该怎么做才能让它发挥作用?
你在这一行有尾随 space:
SDIR = ./src
删除它,先决条件将正确,makefile 将起作用。
我正在处理一个 SDL 项目,我正在为该项目使用 makefile 来构建它。我在 windows 上用 MinGW w64 编译器和 make 做这个。
我的项目结构是这样的
proj
------>bin #stores the executable
------>include #stroes the external library include files
------>lib #stores the lib files of the libraries
------>obj #stores the .o files
------>src #source files
makefile
我的 makefile 看起来像这样
CC = g++
OUT = main
ODIR = ./obj
SDIR = ./src
OUTDIR = ./bin
IDIR = ./include
LDIR = ./lib
libs = -lmingw32 -lSDL2main -lSDL2
OBJS = $(patsubst $(SDIR)/%.cpp,$(ODIR)/%.o,$(wildcard $(SDIR)/*.cpp))
$(ODIR)/%.o : $(SDIR)/%.cpp
$(CC) -c -I $(IDIR) -o $@ $^
$(OUTDIR)/% : $(OBJS)
$(CC) -L $(LDIR) -o $@ $^ $(libs)
.PHONY : run
run :
$(OUTDIR)/$(OUT)
最初,makefile 工作得很好,在我通过编辑 src 变量编辑 makefile 然后取消它之后,make 文件给出了错误
make ./obj/main.o
make: *** No rule to make target `obj/main.o'. Stop.
我尝试将文件重命名为 MakeFile 或 a.mk 并尝试 运行 它,但即使那样也无济于事。
那么我应该怎么做才能让它发挥作用?
你在这一行有尾随 space:
SDIR = ./src
删除它,先决条件将正确,makefile 将起作用。