[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