Como posso fazer com que o gmake me forneça uma lista de todos os makefiles incluídos?

Como posso fazer com que o gmake me forneça uma lista de todos os makefiles incluídos?

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 -Efor 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 Makefileque você está invocando. Adicione esta linha no final (ou pelo menos após a última includeque ocorre no arquivo:

$(info MAKEFILE_LIST == $(MAKEFILE_LIST))

Agora, quando você executar makeisso Makefile, ele irá despejar uma lista dos arquivos incluídos, antes de despachar as regras.

informação relacionada