[docs] on makefiles

Oleg A.Paraschenko olpa на xmlhack.ru
Пт Сен 26 16:42:01 MSD 2003


  Здравствуйте,

  я сейчас разбираюсь с системой make-файлов и хочу поговорить о

* цели "tuned";
* basename == dirname.


  Все конечные цели проходят через этап "tuned", который из файла "xxx.xml" создаёт "xxx.xml-tuned.1". Проблема в том, что этот шаг достаточно ресурсоёмок и результат не кешируется. После выполнения, например,

$ make fo
xsltproc --nonet --xinclude --stringparam tag-level1 book  --stringparam tag-level2 part --stringparam tag-level3 chapter -o admin.xml-tuned.1 \
...,

  повторное задания этой цели:

$ make -n fo
xsltproc --nonet --xinclude --stringparam tag-level1 book  --stringparam tag-level2 part --stringparam tag-level3 chapter -o admin.xml-tuned.1 \
...

  приводит к повторной генерации, а не к сообщению о том, что всё уже собрано.

  По-моему, это неправильно. Я понимаю, что принудительное кеширование невозможно из-за XInclude (хотя и это можно побороть с помощью своего make depends), но предусмотреть что-нибудь типа

$ make CACHETUNED=true <target>

  не помешало бы. Кому-нибудь ещё это надо?


  Теперь про basename == dirname. В данный момент имя файла для генерации должно совпадать с именем папки, в которой он лежит. Это принципиальное решение или просто так получилось? Если нужно, я могу переписать make-файлы так, что

$ make print/xxx.fo

  будет создавать fo-файл из xxx.xml, а

$ make fo

  обработает все xml-файлы в текущей папке.


  Кстати, мне кажется, что наши make-файлы надо называть не "Makefile", а "GNUmakefile".


--
Олег



Подробная информация о списке рассылки docs