C++ 更改此Mag文件,以便它自动将目录中的所有文件视为依赖项?

C++ 更改此Mag文件,以便它自动将目录中的所有文件视为依赖项?,c++,makefile,gnu-make,C++,Makefile,Gnu Make,这是我制作的第一个makefile,我需要你帮我修改一下。 这是我现在的makefile VPATH = src BUILD = build BIN = bin INCLUDE = C:\Users\sidhi\Desktop\Projects\sfml-snake\internalLibraries\include $(shell mkdir -p build) $(shell mkdir -p bin) CC = g++ CFLAGS = -g -std=c++11 LIBS=-ls

这是我制作的第一个makefile,我需要你帮我修改一下。 这是我现在的makefile

VPATH = src
BUILD = build
BIN = bin
INCLUDE = C:\Users\sidhi\Desktop\Projects\sfml-snake\internalLibraries\include

$(shell mkdir -p build)
$(shell mkdir -p bin)

CC = g++ 
CFLAGS  = -g -std=c++11
LIBS=-lsfml-graphics -lsfml-window -lsfml-system


G++_VER_LT48 := $(shell expr `$(CC) -dumpversion | cut -f1-2 -d.` \< 4.8 )
ifeq ("$(G++_VER_LT48)","1")
$(error old version of g++ not supported, upgrade to 4.8 or higher)
endif


default: bin/game


$(BIN)/game: $(BUILD)/main.o $(BUILD)/game.o $(BUILD)/food.o $(BUILD)/snake.o
    $(CC) $(CFLAGS) -o $(BIN)/game $(BUILD)/main.o $(BUILD)/game.o $(BUILD)/food.o $(BUILD)/snake.o $(LIBS)


$(BUILD)/%.o: %.cpp
    $(CC) -c $(CFLAGS) $< -o $@ -I $(INCLUDE)
但这不起作用


另外,我怎样才能包含更多到VPATH的路径?

您可以尝试以下方法:

OBJ=$(shell find $(PROJDIRS) -type f -name "*.o")
然后:

$(BIN)/game: OBJ

希望这有助于……

gnumake有许多有用的内置函数,可以用来生成文件列表。例如,这:

SRCFILES := $(wildcard *.cpp) 
在当前目录中创建.cpp文件列表,然后执行以下操作:

OBJFILES := $(patsubst %.cpp,%.o,$(SRCFILES))

对该列表执行编辑以创建相应.o文件的新列表。

如果尚未生成.o文件(即第一次运行makefile时),则此操作无效。我需要它从第一次开始自动执行如何在build/directory中自动创建目录?@sidhintomas。如果您还有其他问题,请发布新问题。
OBJFILES := $(patsubst %.cpp,%.o,$(SRCFILES))