Como gerar um Makefile com origem em subdiretórios usando apenas um makefile

Eu tenho fonte em um monte de subdiretórios como:

src/widgets/apple.cpp
src/widgets/knob.cpp
src/tests/blend.cpp
src/ui/flash.cpp

Na raiz do projeto, quero gerar um único Makefile usando uma regra como:

%.o: %.cpp
   $(CC) -c 
%.o: %.cpp
   $(CC) -c $<

build/test.exe: build/widgets/apple.o build/widgets/knob.o build/tests/blend.o src/ui/flash.o
   $(LD) build/widgets/apple.o .... build/ui/flash.o -o build/test.exe
lt; build/test.exe: build/widgets/apple.o build/widgets/knob.o build/tests/blend.o src/ui/flash.o $(LD) build/widgets/apple.o .... build/ui/flash.o -o build/test.exe

Quando tento isso, ele não encontra uma regra para build / widgets / apple.o. Posso alterar algo para que o% .o:% .cpp seja usado quando for necessário criar build / widgets / apple.o?

questionAnswers(7)

yourAnswerToTheQuestion