Remake tem algum resultado de depuração muito interessante.
Eu herdei uma grande bagunça de uma rede makefile herdada de outro projeto, com makefiles incluídos em todo o lugar. Eu estou tentando fazer uma mudança simples sem estripar a coisa toda (por mais tentador que seja, eu 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 obter o banco de dados despejado, mas isso é quase tão difícil de seguir com todo o lixo estranho que é carregado dentro
Remake tem algum resultado de depuração muito interessante.
Não tenho certeza se isso funciona de forma recursiva, mas o que dizer de algo como:
strace -e trace=open make | grep -i makefile
Parece que make
não oferece uma maneira fácil de fazer isso, mas talvez seja suficiente para você grep todas as diretivas include
de todos os makefiles como este:
find . -iname 'Makefile' -print0 | xargs -0 grep '^include'
O que você está procurando é equivalente a cc -E
de make
. Eu não estou ciente de tal equivalente. Usar ferramentas externas ajudará em muitos, mas não em todos os casos, devido à expansão secundária .
Mas talvez isso possa te dar 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
Por favor, note que isto não é 100% confiável, pois pode haver inclusão condicional.