我在linux下编译了一个makefile项目,就在昨天。现在该项目将无法编译,我不记得对 makefile 本身进行了任何更改。它make: *** No rule to make target 'obj/TranquilMain.o', needed by 'tranquil;. Stop.
在make
. 我所做的唯一真正的更改是,当我从另一个项目复制代码和 makefile 时,我更改了某些文件(以及依赖项包括)的名称,然后更改_DEPS
了 makefile 中的名称。必要位置的所有文件。
应该注意的是,如果我从 _OBJ 列表中删除除 TranquilMain.o 之外的所有其他文件,它编译得很好。enter code here
我希望我能提供的不仅仅是代码和这些知识,但我不知道问题出在哪里。
适当的 Makefile:“makefile”
#!/usr/bin/make
CC = gcc
CP = g++
SRC_DIR = #.
OBJ_DIR = obj
INC_DIR = ../include
LIB_DIR = ../lib
LIBS = -lm -lSDL -lSDLmain -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net -lGL -lGLU -lGLEW
CFLAGS = -I$(INC_DIR) -L$(LIB_DIR) -std=gnu++0x
_DEPS = DefaultConfig.h BaseApplication.h BasePlugin.h SDLImage.h SDLFont.h SDLWindow.h SDLInput.h SDLRenderer.h SDLApplication.h Math2D.h SDLTimer.h
DEPS = $(patsubst %,$(INC_DIR)/%,$(_DEPS))
_OBJ = TranquilMain.o BaseApplication.o BasePlugin.o SDLImage.o SDLFont.o SDLWindow.o SDLInput.o SDLRenderer.o SDLApplication.o Math2D.o SDLTimer.o
OBJ = $(patsubst %,$(OBJ_DIR)/%,$(_OBJ))
$(OBJ_DIR)/%.o: %.cpp $(DEPS)
$(CP) -c -o $@ $< $(CFLAGS)
tranquil: $(OBJ)
$(CP) -o ../bin/$@ $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(OBJ_DIR)/*.o *~ core $(INC_DIR)/*~
显然没用的 TranquilMain.cpp (只是依赖项中的第一个文件)
#include <iostream>
#include <fstream>
#include <string>
int main( int argc, char* args[] )
{
bool running = true;
while( running == true )
{
}
return 0;
}