Como você pediu para incluir os arquivos, segue as regras para criá-los.
Agora tentarei lembrar como resolvi o problema no meu projeto:
Primeiro, perceba que não nos importamos com dependências extras na primeira vez, já que temos que construir o arquivo objeto de qualquer maneira.
Então, se adicionarmos (ou removermos) dependências, devemos mudar algo que já dependemos (o .cc
ou um dos .h
existentes).
Em resumo, não precisamos da lista completa de dependências para o estado atual, as dependências do estado anterior são boas o suficiente. Portanto, podemos construir o .dep
s ao mesmo tempo que o .o
(isso também é mais rápido, pois somente um CC
pass é necessário).
[o próximo bit que eu tenho um pouco menos de certeza]
Agora precisamos inicializar as dependências: Escreva uma regra para criar alguns arquivos .dep
fictícios (vazios) (sempre que um .cc
for criado (isso pode ser muito rápido)).
Agora ainda temos que criar esses arquivos .dep
fictícios e, em seguida, limpá-los. Se você evitar a criação recursiva, não precisará de limpeza para contornar erros (só é necessário limpar para economizar espaço em disco).
O último passo foi adicionar um nível de recursão (lembre-se que make recursivo (geralmente) é considerado prejudicial link )
Escreva um makefile simples para regras limpas, que as chamadas façam em outro makefile para qualquer regra que ele não possa fazer.
Você pode precisar apenas deste último passo, mas eu não vou deletar o início da resposta, pois ele mostra como melhorar o makefile.