我对makefile很陌生,但我仍然无法理解如何设置源文件的子目录。
我的目录树是:
i18n/
src/
engine/
graphics/ (currently only directory used)
我正在使用这个预制的Makefile
:
TARGET = caventure
LIBS = -lSDL2
CC = g++
CFLAGS = -Wall
TGTDIR = build
.PHONY: default all clean
default: $(TARGET)
all: default
OBJECTS = $(patsubst %.cpp, %.o, $(wildcard *.cpp))
HEADERS = $(wildcard *.h)
%.o: %.cpp $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@
.PRECIOUS: $(TARGET) $(OBJECTS)
$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -Wall $(LIBS) -o $(TGTDIR)/$(TARGET)
clean:
-rm -f *.o
-rm -f $(TARGET)
GNU make 的wildcard
函数不会递归访问所有子目录。您需要它的递归变体,可以按照此答案中的描述实现:
https://stackoverflow.com/a/18258352/1221106
因此,$(wildcard *.cpp)
您不需要使用递归通配符函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句