Makefile (geração de dependência automática)

apenas para terminologia rápida:

#basic makefile rule
target: dependencies
    recipe
O Problema: quero gerar as dependências automaticament

Por exemplo, espero transformar isso:

#one of my targets
file.o: file.cpp 1.h 2.h 3.h 4.h 5.h 6.h 7.h 8.h another.h lots.h evenMore.h
    $(COMPILE)

Nisso

#one of my targets
file.o: $(GENERATE)
    $(COMPILE)

e não tenho muita certeza se é possível ..

O que eu sei:

Eu posso usar este sinalizador de compilador:

g++ -MM file.cpp

e retornará o destino e a dependência adequado
do exemplo, retornaria:

file.o: file.cpp 1.h 2.h 3.h 4.h 5.h 6.h 7.h 8.h another.h lots.h evenMore.h  

e qualquer forma, 'make' NÃO me permite escrever explicitamente o código do shell na seção de destino ou dependência de uma regra:
Sei que existe uma função 'make' chamadaConch

mas não consigo conectar isso como dependência e fazer mágica de análise, porque ela depende da macro $ @, que representa o alvo ... ou pelo menos acho que é esse o problema

té tentei substituir a dependência "file.cpp" por essa função makefile e isso também não funcionar

#it's suppose to turn the $@ (file.o) into file.cpp
THE_CPP := $(addsuffix $(.cpp),$(basename $@))

#one of my targets
file.o: $(THE_CPP) 1.h 2.h 3.h 4.h 5.h 6.h 7.h 8.h another.h lots.h evenMore.h
    $(COMPILE)
#this does not work

Então, em todo o Google, parece haver duas soluções. ambos os quais não entendo completamente.
Do GNU Make Manual

Algum site que diz que o GNU Make Manual está desatualizado

Então, minha pergunta final é: é possível fazer do jeito que eu quero,
e, se não, alguém pode quebrar o código de um desses sites e me explicar em detalhes como eles funcionam. Vou implementá-lo de uma dessas maneiras, se for necessário, mas estou cansado de colar um pedaço de código no meu makefile antes de entendê-lo

questionAnswers(7)

yourAnswerToTheQuestion