Como posso obter o gmake para me fornecer uma lista de todos os makefiles incluídos?

7

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

    
por Joe Sewell 26.06.2014 / 22:48

4 respostas

1

Remake tem algum resultado de depuração muito interessante.

    
por 17.09.2014 / 00:12
1

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
    
por 26.11.2014 / 16:07
0

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'
    
por 16.07.2014 / 12:33
0

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.

    
por 20.11.2014 / 08:17

Tags