Я пытаюсь построить проект с несколькими включенными модулями. дерево файлов выглядит следующим образом:

отдельные файлы Makefile для lib_one, lib_two и Main. cpp работают нормально, генерируя 2 DLL и EXE для проекта, но требует войти в каждый каталог и выполнить команду 'make' для каждого модуля.
Теперь я хочу создать Makefile в каталоге верхнего уровня ('/ project'), который запускает сборку для всех другие модули (DLL и EXE) один раз. Основываясь на некоторых результатах поиска, я получил что-то вроде этого:
lib_one := ./src/lib_one
lib_two := ./src/lib_two
libraries := $(lib_one) $(lib_two)
player := ./src
.PHONY: all $(player) $(libraries)
all: $(player)
$(player) $(libraries):
$(MAKE) --directory=$@
$(player): $(libraries)
, когда я выполняю команду 'make', я получил эту ошибку:
Makefile:10: ***. Stop.
(строка 10 такова: $(MAKE) --directory=$@
). Помимо способа исправить эту ошибку, я ищу способ выполнить sh следующие 3 вещи:
1) объектные файлы (*.o
) из всех модулей (DLL и EXE) должны быть хранит в каталоге build
там же, где и в каталоге src
.
2) конечные файлы (*.dll
и *.exe
) должны быть помещены в каталог reelease
вместе с каталогами src
и build
.
3) если бы элемент 2 был возможен, было бы неплохо, если бы каждый тип файла был помещен в определенный каталог c внутри release
(bin
для * 1033) *, lib
для *.dll
и shared
для других типов). также, даже если exe и dll находятся в разных каталогах, можно было бы запустить исполняемый файл из этого каталога (чтобы он выполнял поиск необходимых библиотек в ../lib
наряду с другими обычными местами?).