Я работаю над личным проектом, написанным на C ++, и использую GNU Autotools в качестве системы сборки.
Я хотел бы распространять свое программное обеспечение вместе со справочными страницами, но я не очень люблю Groff. По этой причине я решил написать все в Asciidoc и скомпилировать его в Groff с a2x
.
Хотя я вполне доволен результатом, Я заметил, что для установки Asciidoc может потребоваться много места на диске. Например, asciidoc-base
в Debian Stretch требует 1928 МБ зависимостей! ( Редактировать : даже не правда. Я забыл отключить предложенный / рекомендуемый , но случай использования актуален в любом случае).
Одним из решений было бы сделать его необязательным. Для этого my configure.ac
содержит следующие строки:
AC_CHECK_PROG([asciidoc], [a2x], [a2x], [false])
AM_CONDITIONAL([ASCIIDOC_AVAIL], [test x$asciidoc != xfalse])
… и файл man/Makefile.am
определяется следующим образом:
if ASCIIDOC_AVAIL
man1_MANS = foo.1
man5_MANS = foo.conf.5
foo.1: foo.1.txt
$(asciidoc) --doctype manpage --format manpage ./$<
foo.conf.5: foo.conf.5.txt
$(asciidoc) --doctype manpage --format manpage ./$<
clean:
rm $(man1_MANS) $(man5_MANS)
endif
Несмотря на то, что это похоже на работу, я не очень доволен этим. Мне не нравится идея не предоставлять руководство.
Желательно ли предварительно скомпилировать страницы руководства как часть шага make dist
? Так же, как дистрибутив foo-x.y.z.tar.gz
содержит скрипт configure
(который не проверяется в VCS, но генерируется autoreconf
), я мог бы сделать foo.1
и foo.conf.5
предварительно скомпилированными и распространять с исходный архив.
При условии, что это приемлемо с точки зрения «лучших практик», как я могу этого достичь? Я пытался объявить их как EXTRA_DIST
(EXTRA_DIST = man1_MANS man5_MANS
), но мне не повезло.
Есть идеи?
EDIT : Лучший способ добавить сгенерированные файлы в дистрибутив? Вопрос, похоже, связан, хотя я сомневаюсь, что для моего конкретного случая есть встроенный механизм.