В настоящее время я пытаюсь улучшить make-файл, который я использую для сборки своего проекта на c ++ с использованием sfml-framework.Структура папок моего проекта в настоящее время выглядит следующим образом:
- Src / Header для заголовочных файлов
- Src / Source для .cpp Files
- Bin / для.exe
- Lib / для библиотеки sfml
Мой текущий make-файл:
CC = g++ -g
SRC = Src/Source/
BIN = Bin/
INC = -I Lib/SFML/include/ -I Src/Header/
LIB = -L Lib/SFML/lib/ -lsfml-graphics-d -lsfml-window-d -lsfml-system-d
EXE = Test
SOURCEFILES = $(SRC)Main.cpp $(SRC)Menu.cpp $(SRC)Button.cpp
OBJ = $(SOURCEFILES:.cpp=.o)
all: $(SOURCEFILES) $(EXE)
$(EXE) : $(OBJ)
$(CC) -o $(BIN)$(EXE).exe $(OBJ) $(LIB)
.cpp.o:
$(CC) -c $< $(INC) -o $@
Этот make-файл работает нормально, однако я хотел бы кое-что сделатьулучшить, но не смог приступить к работе.
В настоящее время необязательно добавлять все файлы cpp вручную в список исходных файлов.Поскольку проект, скорее всего, будет быстро расти с точки зрения количества файлов, и я хочу разделить исходные файлы на разные подкаталоги, это очень скоро станет неразберихой.Я попытался получить все файлы cpp в каталоге с $ (подстановочный знак Src / Source / *. Cpp) вместо того, чтобы перечислять их по отдельности, но он даже не смог выполнить make-файл.Чего мне там не хватает?
С моим текущим make-файлом все .o-файлы помещаются в то же место, что и .cpp-файл, что мне тоже не очень нужно.Есть ли способ вывести все файлы .o в дополнительный каталог \ obj \ и связать его с .exe оттуда?
Кроме того, так как я пишу make-файл впервые, яесли есть какие-то общие улучшения в моем подходе, то любой совет приветствуется.