[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: Makefile




O Marcel e o André já responderam a pergunta do Ivan. A seguir eu só
estou  ilustrando as respostas deles com uns exemplos.

-----------------------------------------------------------------------
Digamos que o meu Makefile não tem o tal FORCE. 
Para criar um arquivo hamiltoniano.dvi a partir do documento 
CWEB-LaTeX hamiltoniano.w fiz 

   meu_prompt>make hamiltoniano.dvi
   This is CWEAVE (Version 3.4)
   *1*2*3*4*5*8*10*12*25*27
   Writing the output file...*1*2*3*4*5*8*10*12*25*27
   [...]
   latex hamiltoniano.tex
   This is TeX, Version 3.14159 (C version 6.1)
   [...]
   Output written on hamiltoniano.dvi (18 pages, 55436 bytes).
   Transcript written on hamiltoniano.log.

Com temos que rodar o latex duas vezes para criar ou atualizar 
o sumário fiz novamente 

   meu_prompt>make hamiltoniano.dvi
   make: `hamiltoniano.dvi' is up to date.

Hummm. De fato, o make tem razão. Veja as datas dos arquivos

   meu_prompt>ll
   -rw-r--r--   1 coelho   coelho      55436 Feb 26 20:18 hamiltoniano.dvi
   -rw-r--r--   1 coelho   coelho      34013 Feb 26 20:12 hamiltoniano.tex
   -rw-r--r--   1 coelho   coelho       1983 Feb 26 20:18 hamiltoniano.toc
   -rw-r-----   1 coelho   users       27872 Feb 26 20:11 hamiltoniano.w


Note que a data da última alteração do arquivo hamiltoniano.dvi é 
mais recente que as datas da última alteração dos repectivos arquivos
.tex do qual ele depende (e o .tex é mais recente do .w do qual ele
depende) desta forma, o make acertadamente não reconstruiu o 
`target' hamiltoniano.dvi. 

Para _não_ criar ou atualizar o target, o make certificou-se que todos
os arquivos dos quais este target depende __existem__ e estão
atualizados (up to date) e de que a data do target é a mais recente de
todas. (Notem que a palavra atualizar acima foi empregada de uma certa
forma recursiva.)

Assim, para forçar que um target seja sempre reconstruído basta 
escrever no Makefile as regra

   hamiltoniano.dvi: hamiltoniano.tex   FORCE
	  <comando>

   FORCE: 

onde FORCE é nome de um arquivo que _não existe_. Assim, sempre que
fizermos 

   meu_prompt>make hamiltoniano.dvi

esse o target hamiltoniano.dvi será criado ou reconstruído.

Sem usar esse tal nome-de-um-arquivo-que-não-exite ainda é possível 
usar o make para reconstruir o hamiltoniano.dvi. Para isto basta, por
exemplo, fazer

   meu_prompt>touch hamiltoniano.w

Após fazer isto veja o que acontece com as datas do arquivos.

   meu_prompt>ll 
   -rw-r--r--   1 coelho   coelho      55436 Feb 26 20:18 hamiltoniano.dvi
   -rw-r--r--   1 coelho   coelho      34013 Feb 26 20:12 hamiltoniano.tex
   -rw-r--r--   1 coelho   coelho       1983 Feb 26 20:18 hamiltoniano.toc
   -rw-r-----   1 coelho   coelho      27872 Feb 26 20:41 hamiltoniano.w

Após isto, se fizermos

  meu_prompt>make hamiltoniano.dvi

o target hamiltoniano.dvi é reconstruído. 


Kbô os exemplos.


té +,
coelho