Нет определенной или необходимой структуры каталогов.
Вы можете настроить ее так, как вам нравится.Ваша проблема проста для решения.Просто поручите Makefile искать в подкаталогах или помещать скомпилированные объекты в подкаталоги вместо использования только текущего каталога.
Вы бы просто использовали в путях Makefile:
%.o : %.cpp
заменить на
bin/%.o : %.cpp
Таким образом, он проверит, существует ли двоичный файл в каталоге bin
и т. Д., Вы можете применить то же самое к местам компиляции файлов.
Существуют способы добавления / удаления / изменения путейисходные и объектные файлы.
Ознакомьтесь с gnu make manual , в частности с разделом 8.3 Функции для имен файлов и с предыдущей 8.2 Функции дляПодстановка и анализ строк .
Вы можете сделать что-то вроде:
получить список объектов из списка исходных файлов в текущем каталоге:
OBJ = $(patsubst %.cpp, %.o, $(wildcard *.cpp))
Вывод:
Application.o Market.o ordermatch.o
Если двоичные объекты находятся в подкаталоге bin
, а исходный код находится в текущем каталоге, вы можете применить префикс bin
к сгенерированным объектным файлам:
OBJ = $(addprefix bin/,$(patsubst %.cpp, %.o, $(wildcard *.cpp)))
Вывод:
bin/Application.o bin/Market.o bin/ordermatch.o
и т. Д.