这是我制作的第一个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)
我想更改它,使build /目录中的所有文件都作为依赖项添加。
之类的东西bin/game: $(BUILD)/%.o
但这不起作用。
另外,如何添加更多VPATH路径?
答案 0 :(得分:2)
GNU Make有许多有用的内置函数,可用于生成文件列表。例如,这个:
SRCFILES := $(wildcard *.cpp)
在当前目录中创建.cpp文件列表,然后执行以下操作:
OBJFILES := $(patsubst %.cpp,%.o,$(SRCFILES))
对该列表执行编辑以创建相应.o文件的新列表。
答案 1 :(得分:-1)
您可以尝试以下方式:
OBJ=$(shell find $(PROJDIRS) -type f -name "*.o")
然后:
$(BIN)/game: OBJ
希望这会有所帮助......