C++ 我的makefile不是';我找不到包含路径

C++ 我的makefile不是';我找不到包含路径,c++,gcc,makefile,include-path,C++,Gcc,Makefile,Include Path,简单地说:它没有找到包含路径: CC = g++ OBJS = *.o #*/*.o DEBUG = -g PNAME = game INCLUDES = -Iheaders CFLAGS = -Wall $(DEBUG) LFLAGS = -Wall -lsfml-graphics -lsfml-window -lsfml-system $(DEBUG) all: build build: $(OBJS) $(CC) $(LFLAGS) $(OBJS) -o $(PNAME)

简单地说:它没有找到包含路径:

CC = g++
OBJS = *.o #*/*.o

DEBUG = -g
PNAME = game
INCLUDES = -Iheaders

CFLAGS = -Wall $(DEBUG)
LFLAGS = -Wall -lsfml-graphics -lsfml-window -lsfml-system $(DEBUG)

all: build

build: $(OBJS)
    $(CC) $(LFLAGS) $(OBJS) -o $(PNAME)

clean:
    \rm *.o *~ $(PNAME)

.cpp:
    $(CC) $(CFLAGS) $(INCLUDES) -c $(.SOURCE)

你的makefile在我看来很破。首先,您可能想要:

OBJS = $(patsubst %.cpp,%.o,$(wildcard *.cpp))
其次,您的最终规则需要更像:

%.o: %.cpp
    $(CC) $(CFLAGS) $(INCLUDES) -c $^ -o $@

生成文件对包含路径没有任何作用。我想你的意思是编译器没有找到包含路径。。。您从编译器得到的错误消息是什么?复杂的生成文件不是我的专长。@迈克:为了澄清,
OBJS=*.o
逐字粘贴字符串
*。o
出现在
$(OBJS)
的任何地方;这很少是你想要的。上述版本将
OBJS
的值设置为所有.cpp文件的列表,后缀替换为.o(请记住,对象文件还不存在,因此您无法搜索它们!)。修改后的规则表示如何从相应的.cpp文件中构建任何.o文件
$^
$@
是分别解析依赖项(即.cpp)和目标项(即.o)的特殊变量。我知道makefiles中宏的性质,但不知道后者。谢谢