[docs] Re: current makefiles again (was: Tuning and profiling)

Vitaly Ostanin vyt на vzljot.ru
Вт Дек 9 15:07:07 MSK 2003


В продолжение темы о шаблонах и переменных.

On Tue, 2 Dec 2003 20:16:37 +0300
"Oleg A. Paraschenko" <olpa на xmlhack.ru> wrote:

<skipped/>

> > Будет сложно переписывать правила везде, где используется
> > прибитое гвоздями расширение .xinclude
> 
>   С этим согласен. Но надо же в какой-то момент переставать
>   делать
> косвенные ссылки и писать явно что от чего зависит. Мне
> кажется, что замена ".xinclude" на "$(xinclude)" ничего не
> даёт.

Я тут ещё немного подумал над этим и всё-таки не согласен.

> > Да, Makefiles переписывались для сборки с учётом
> > зависимостей, но причём тут тотальная шаблонность? Мы же не
> > проект на С собираем с тучей файлов.
> 
>   Думаю, что стили написания смешивать нехорошо. Результат
>   будет объединять недостатки как одного, так и другого
>   подхода.

Использование сборки по зависимостям и шаблонное указание имён
файлов - это разные стили. Да, безусловная сборка - это плохо, но
чем плохо указание имён файлов через переменные?

Если файл указывается несколько раз, его нужно брать именно в
переменную.

Я могу оценить крутость записи вида
fo: $(TMP)/$(DOCUMENT_NAME).$(paper_profile).$(paper_template).fo
, но хотел бы делать это как можно реже.

> > > > Почему нельзя воспользоваться зависимостями через
> > > > переменные$(XINCLUDED): $(XML)
> > > > , как это было сделано в make2 ?
> > > 
> > >   $(XINCLUDED) и $(XML) зависят от $(DOCUMENT_ROOT).
> > >   Соответственно,
> > > получается единственное правило.
> > > 
> > >   %.xinclude: %.xml может раскрываться в несколько правил,
> > >   например:
> > > 
> > > xxx.xinclude: xxx.xml
> > > sdfjhk.xinclude:  sdfjhk.xml
> > > allother.xinclude:  allother.xml
> > > enough.xinclude: enough.xml
> > > 
> > >   Соответственно, в варианте с % можно говорить:
> > > 
> > > $ make tmp/xxx.xinclude tmp/sect2.xinclude
> > > tmp/sect2.xinclude
> > 
> > Цель этой команды?
> 
>   Собрать с помощью xinclude несколько файлов, находящихся в
>   одном
> каталоге.
> 
>   Да, в alt docs на каждый текстовый модуль свой каталог. Но
>   зачем делать
> это принципиальным ограничением?

Итак, шаблонная запись правил даёт возможность собирать несколько
документов одним запуском make и при этом делает Makefile
трудночитаемыми и трудноподдерживаемыми.

Я крайне против забивания суффиксов гвоздями, потому что на
практике убедился, насколько их запарно отыскивать, понимать и
менять.

Для сборки нескольких документов (пусть даже и из одного
каталога) можно отдельно запускать make, указав имя документа.

Синтаксический кошмар ради сборки многих документов одним
запуском make - это неоправдано. Я имею в виду не синтаксис make,
а повторение громоздких конструкций в именах файлов в Makefiles.

<skipped/>

-- 
Regards, Vyt
mailto:  vyt на vzljot.ru
JID:     vyt на vzljot.ru
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : /pipermail/docs/attachments/20031209/0a5c3361/attachment.bin


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