dependência Makefile para arquivos desconhecidos no diretório conhecido (para DocBook)
-
13-09-2019 - |
Pergunta
Como parte da compilação Estou processando arquivo DocBook que produz vários arquivos HTML (um arquivo por capítulo).
Eu quero postprocess esses arquivos HTML e copiá-los em outro lugar. Esses arquivos dependem fonte DocBook, mas eu não posso saber nomes de arquivos com antecedência (nomes de arquivos dependem fonte DocBook também).
Eu tenho regra que espécie de obras se os arquivos já estão gerado:
www/manual/%.html: build/manual/%.html
postprocess "$<" "$@"
mas eu não sei como dizer make
para gerá-los, se eles não estão lá ainda. Se eu adicionar regra para www/manual/index.html
, apenas que arquivo é pós-processada, não todos eles.
Eu suponho que eu preciso makedepend
para DocBook ou talvez algum truque curinga bacana. Qual é a solução para isso?
Solução
Eu vou assumir cegamente GNU Faça aqui; se não, técnicas semelhantes devem aplicar-se com a sintaxe ligeiramente alterada.
Se fosse comigo, eu iria usar uma regra semelhante ao seu acima, possivelmente com uma lista de arquivos gerados pelo função de curinga
E então eu ia colocar essa regra em uma sub-makefile separado, chamado recursivamente
Isto é, em sua principal Makefile,
build:
# do the docbook processing
$(MAKE) -f htmlprocessmakefile
que Makefile vai ver a lista completa dos arquivos HTML que foram criadas.
Outras dicas
Você está tentando escrever uma regra como "Se não existem arquivos em tudo no diretório manual
em seguida, executar o comando foo para gerá-los"?
Uma possibilidade fácil (um hack, dado que eu não sei o uso avançado makefile e não pretendo investir tempo aprendendo unecessarily) seria para esse comando foo especificado, não só para criar nomes de arquivos que você não conhece com antecedência, mas também para criar um arquivo (talvez vazio), cujo nome de arquivo que você sabe de antemão, e que você pode usar como seu marcador para se ou não a regra foi executado.