Makefile make-来自不存在文件的神秘错误

Makefile make-来自不存在文件的神秘错误,makefile,mingw,Makefile,Mingw,我最近试图修改我的makefile,以便在修改头时它能够正确地重建文件。然而,我无法让它工作——它反而会产生关于不存在的文件的神秘错误消息 我当前的makefile如下 HEADER_FILES := $(wildcard src/*.h) $(wildcard src/*/*.h) CPP_FILES := $(wildcard src/*.cpp) $(wildcard src/*/*.cpp) OBJ_FILES := $(patsubst src/%.cpp,obj/%.o,$(CPP_

我最近试图修改我的makefile,以便在修改头时它能够正确地重建文件。然而,我无法让它工作——它反而会产生关于不存在的文件的神秘错误消息

我当前的makefile如下

HEADER_FILES := $(wildcard src/*.h) $(wildcard src/*/*.h)
CPP_FILES := $(wildcard src/*.cpp) $(wildcard src/*/*.cpp)
OBJ_FILES := $(patsubst src/%.cpp,obj/%.o,$(CPP_FILES))
LD_FLAGS :=
CC_FLAGS := -Wall -fwrapv -std=c++0x -DNOMINMAX -DFLOAT_CONV -DNODEBUGLOGGING
# CC_FLAGS := -Wall -fwrapv -std=c++0x -DNOMINMAX -DFLOAT_CONV -DMUSIC

INC = src Box2D SDL-1.2.15/include SDL-1.2.15/include/SDL C:/Boost/boost_1_55_0
CC_FLAGS += $(foreach d, $(INC), -I$d)

LINK_PATHS = SDL-1.2.15/lib C:\Boost\boost_1_55_0\stage\lib Box2D\Build\Box2D
LINK = mingw32 SDLmain SDL_mixer SDL_image SDL_ttf SDL Box2d boost_system-mgw48-mt-d-1_55 boost_filesystem-mgw48-mt-d-1_55
LD_FLAGS += $(foreach d, $(LINK_PATHS), -L$d)
LD_FLAGS += $(foreach d, $(LINK), -l$d)

EXE_NAME := Pickory/Pickory.exe

depend: .depend

.depend: $(HEADER_FILES) $(CPP_FILES)
    g++ $(CC_FLAGS) -MM $^>>./.depend;

include .depend

# main.exe: $(OBJ_FILES)
$(EXE_NAME): $(OBJ_FILES)
    g++  -o $@ $^ $(LD_FLAGS)

obj/%.o: src/%.cpp
    -mkdir $(subst /,\,$(dir $@))
    g++ $(CC_FLAGS) -c -o $@ $<

run: $(EXE_NAME)
    (cd Pickory && $(notdir $(EXE_NAME)))
.PHONY: run
这很奇怪,因为没有这样的“defaltgun”文件,事实上,“defaltgun”在整个源代码中都没有出现。会发生什么事?我如何修复我的makefile


另外,
.depend
文件为空。因此,大概gcc也没有正确地生成依赖项。

您修改了什么?如果你把
$(info$(CPP_FILES))
放在
depend
规则上面,你会得到什么呢?我添加了.depend规则。和
$(info$(CPP_FILES))
打印出一个包含146个文件的列表,但德法尔特根不在其中,这并不奇怪,因为没有这样的文件;删除除
.depend
之外的所有规则,删除“include depend”行,然后开始删除源文件(例如,复制整个树,然后删除文件,或者只是暂时将目录向下移动,使其不被
通配符调用看见)。继续,直到错误消失,如果你仍然看不到错误,发布一些我们可以复制的东西。我最终重写了makefile,使用了一种完全不同的方法,所以没什么大不了的。但我仍然很好奇gcc是如何设法从稀薄的空气中提取这些文件名的。
g++: error: src/CommonEntities/defaltgun.cpp: No such file or directory
g++: error: src/TutorialTunnel/roomdef_tt.cpp;: No such file or directory
makefile:21: recipe for target '.depend' failed
mingw32-make: *** [.depend] Error 1