Глава 7. Справочное руководство программиста

1. Makefile'ы
1.1. Makefile исходного кода Borges
1.2. Makefile'ы проектов документации
1.3. Makefile'ы в действии
2. Последовательность создания руководства
3. Добавление/изменение правил руководства
4. Поддержка другого DTD, отличного от DocBook
5. Замечания по установке Borges
5.1. Установка Borges в нестандартный каталог
5.2. Адаптация Borges к нестандартному окружению

Аннотация

Здесь мы рассмотрим внутренности Borges. Это может быть интересным для разрабочиков, а также для пользователей, желающих воспользоваться преимуществами наиболее продвинутых возможностей Borges.

Если что-то из изложенного ниже не совсем понятно, или если вы хотите знать больше, используйте исходный код Luke. Если вам что-то совсем не понятно, задайте вопрос в списке рассылки Borges.

1. Makefile'ы

Мы перечислим здесь различные Makefile'ы, доступные в репозитории исходных текстов Borges и в репозиториях исполняемой части[5]. Мы подробно опишем методы создания этих Makefile'ов, их распространения и т.п.

1.1. Makefile исходного кода Borges

Здесь существует только один используемый Makefile. Вы найдёте его в корне репозитория.

Этот Makefile имеет две главные цели:

doc

компилирует документацию Borges и отчёты;

install

устанавливает Borges в систему, чтобы пользователи этой системы могли начать свои проекты документации с использованием Borges. Она устанавливает все скрипты и Makefile'ы и создаёт шаблон репозитория, чтобы пользователи могли быстро начать пользоваться Borges'ом.

Подсказка

По умолчанию Borges устанавливается в /usr/share (/usr/share/Borges/). Вы можете изменить этот путь, передав в make параметр TARGET. К примеру, если вы хотите перенести Borges в /home/joe/test/Borges/, просто выполните make install TARGET=/home/joe/test

Вы могли обратить внимание, что Borges не нуждается в компиляции. Действительно, все скрипты написаны на Perl или bash и компилировать их нет необходимости.

1.2. Makefile'ы проектов документации

1.2.1. Что где находится

На приведенной ниже диаграмме показано, как различные Makefile'ы, предоставляемые Borges'ом, распределены в репозитории исполняемой части.

1.2.2. Кто что вызывает

На следующей диаграмме показано, как Makefile'ы, найденные в репозитории исходного кода Borges (слева), распределяются в воображаемом проекте (справа) с двумя книгами Book1 и Book2 на двух языках en и fr

Рисунок 7.1. Распределение Makefile'ов

Распределение Makefile'ов

1.3. Makefile'ы в действии

Здесь мы видим, каким образом Makefile'ы связаны друг с другом. На Рисунок 7.2, «Взаимосвязи между Makefile'ами» показано, как Makefile'ы включают друг друга. Стрелка на диаграмме означает «включение».

Рисунок 7.2. Взаимосвязи между Makefile'ами

Взаимосвязи между Makefile'ами

Все пути являются относительными по отношению к корневому каталогу, если не указаны другие.

Мы можем разделить их на четыре типа:

Производство

Makefile'ы слева используются для выполнения задач над руководствами, модулями, изображениями и т.п.

manuals/Book/Makefile.include

Этот Makefile по умолчанию пуст. Он может быть использован опытными пользователями для переопределения правил компиляции руководства по умолчанию. Подробнее смотрите в Раздел 3, «Добавление/изменение правил руководства».

Makefile.DB

Этот Makefile содерждит правила для преобразования исходных XML-файлов DocBook в любой нужный выходной формат (PDF, HTML и т.д.). Опытные пользователи могут разработать свой собственный Makefile.XXX для поддержки другого DTD. Подробнее о том, как это сделать, смотрите в Раздел 4, «Поддержка другого DTD, отличного от DocBook».

Чтобы определить, какой Makefile используется для создания выходных форматов, система ищет элемент(ы) <makefile> в conf/repository.xml и устанавливает соответственную переменную OUTPUTS в корневом Makefile.include, описанном ниже.

Makefile.include

Этот Makefile автоматически создаётся корневым Makefile'ом. В нём содержится полезная информация для всех других Makefile'ов, полученная из окружающей среды и в особенности из главного конфигурационного файла conf/repository.xml. Также в нём содержатся некоторые стандартные функции и правила.



[5] Важно понимать разницу между репозиторием исходных текстов Borges, в котором находится весь исходный код Borges, сопровождаемого его разработчиками; и простой реализацией Borges, представляющей собой репозиторий проекта документации с исходными файлами документации, управляемыми Borges'ом.