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中宏的性质,但不知道后者。谢谢