
Eu herdei uma grande bagunça de uma rede makefile que foi herdada de outro projeto, com makefiles incluídos em todos os lugares. Estou tentando fazer uma mudança simples sem destruir tudo (por mais tentador que seja, simplesmente não tenho tempo agora).
Existe alguma maneira de extrair um makefile completo do gmake,ou seja, com todos os arquivos incluídos já incluídos? Eu sei como fazer o dump do banco de dados, mas isso é tão difícil de seguir com todo o lixo estranho que é carregado.
Responder1
Refazertem uma saída de depuração muito interessante.
Responder2
O que você está procurando é equivalente a cc -E
for make
. Não conheço tal equivalente. O uso de ferramentas externas ajudará em muitos casos, mas não em todos, devido aexpansão secundária.
Mas talvez isso possa levá-lo um passo mais perto. No final do Makefile inicial, adicione esta regra:
.PHONY: printMakefiles
printMakefiles:
echo $(MAKEFILE_LIST)
Agora você pode descobrir quais Makefiles foram incluídos executando
make printMakefiles
Observe que isso não é 100% confiável, pois pode haver inclusão condicional.
Responder3
Não tenho certeza se isso funciona recursivamente, mas que tal algo como:
strace -e trace=open make | grep -i makefile
Responder4
Edite o main Makefile
que você está invocando. Adicione esta linha no final (ou pelo menos após a última include
que ocorre no arquivo:
$(info MAKEFILE_LIST == $(MAKEFILE_LIST))
Agora, quando você executar make
isso Makefile
, ele irá despejar uma lista dos arquivos incluídos, antes de despachar as regras.