Есть подстановочная функция , которую можно использовать для сопоставления с шаблоном, например так:
CXX_FILES = $(wildcard src/*.cpp) # All .cpp files in the directory
Это не рекурсивно, но, по крайней мере, избавит вас от необходимости вручную указыватьфайлы в определенном каталоге.Правило их построения выглядело бы примерно так:
CXX_FILES = $(wildcard src/*.cpp) # All .cpp files in the directory
OBJ_FILES = $(CXX_FILES:src/%.cpp=$(OBJ_DIR)/%.o) # Corresponding .o files
# Rules
all: $(OBJ_FILES)
g++ $(OBJ_FILES) -o output_filename
$(OBJ_DIR)/%.o: src/%.cpp
g++ -c $< -o $@
О, и, чтобы ответить на ваш вопрос, этот метод полностью переносим.