Используйте autotools с README.md


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

При запуске automake я получаю следующую ошибку

Makefile.am: required file `./README' not found

Можно ли сказать autotools, чтобы они не проверяли README?

4 21

4 ответа:

Просто передайте опцию foreign в automake. Это говорит ему, что ваше программное обеспечение не соответствует типичным стандартам gnu, и, таким образом, пропуск README не является ошибкой. Как правило, это делается в configure.ac:

AM_INIT_AUTOMAKE([foreign])

Но это также можно сделать, назначив AUTOMAKE_OPTIONS в Makefile.am:

AUTOMAKE_OPTIONS = foreign

Мы используем

README: README.md
        fgrep -v "[Build Status]" $< \
                | markdown \
                | html2text -style pretty -nobs \
                | sed -e 's:&gt;:>:g' \
                > $@.tmp

Чтобы сгенерировать текст README из markdown README.md

Зачем просить его не искать ваш файл README, если он у вас уже есть? Он просто оказался в формате markdown и сохранен как README.md. если вы хотите, чтобы ваш файл README был идентичен вашему README.md файл, почему бы не связать с ним?

Из командной строки:

ln -s README.md README

Таким образом, вы можете сохранить свой README.md файл и любые инструменты, которые вы используете, по-прежнему будут работать со стандартными соглашениями об именовании. Говоря в скобках, весьма вероятно, что autotools позволяет вам указать пользовательский путь для вашего readme.

Простое решение, основанное на ответеfceller : единственное, что нужно, - это правило построения для README в makefile.am. Это правило может быть даже пустым. Поэтому просто добавьте следующую строку к вашему makefile.am:

README: README.md

Вот и все, теперь automake больше не жалуется, и вам не нужно объявлять свой проект как foreign.

Это не нужно, но я предпочитаю более полное правило, я добавляю к makefile.am:

README: README.md
    pandoc -f markdown -t plain --wrap=none $< -o $@

CLEANFILES = README

Но даже с этим правилом, README не строится, если вы явно вызовите make README.