Я недавно начал использовать autoconf и automake для проекта, над которым я работаю. Документация проекта написана на LaTeX. Поскольку я не хочу использовать LaTeX в качестве зависимости, я хочу проверить наличие двоичного файла pdflatex с помощью autoconf, а затем использовать эту информацию в Makefile.am , чтобы решить, следует ли просто скопируйте файл .tex в каталог документации или создайте файл PDF и скопируйте оба файла.
Это соответствующий раздел в configure.ac :
# Check for presence of pdfLaTeX
AC_CHECK_PROG(PDFLATEX, pdflatex, pdflatex)
if test -z "$PDFLATEX"; then
AC_MSG_WARN([Unable to create PDF version of the user manual.])
fi
AM_CONDITIONAL([HAVE_PDFLATEX], test -n "$PDFLATEX")
В каталоге doc / у меня есть следующий Makefile.am :
docfiles = manual.tex QuickStart.txt
if HAVE_PDFLATEX
docfiles += manual.pdf
MANNAME = manual
MANTEXSRC = $(MANNAME).tex
MANAUX = $(MANNAME).aux
MANPDF = $(MANNAME).pdf
CLEANFILES = $(MANPDF) $(MANNAME).log $(MANNAME).idx $(MANNAME).out \
$(MANNAME).toc $(MANAUX)
$(MANPDF): $(srcdir)/$(MANTEXSRC)
$(PDFLATEX) $<
endif
dist_doc_DATA = $(docfiles)
Эта настройка работает, когда присутствует pdflatex , но когда он отсутствует, работает make , но make distcheck запрашивает способ создания файла PDF :
make[1]: *** No rule to make target `manual.pdf', needed by `distdir'. Stop.
Глядя в Makefile , который сгенерировал Automake, я вижу:
#am__append_1 = manual.pdf
am__dist_doc_DATA_DIST = manual.tex QuickStart.txt manual.pdf
и дальше я нахожу:
docfiles = manual.tex QuickStart.txt $(am__append_1)
#MANNAME = manual
#MANTEXSRC = $(MANNAME).tex
#MANAUX = $(MANNAME).aux
#MANPDF = $(MANNAME).pdf
#CLEANFILES = $(MANPDF) $(MANNAME).log $(MANNAME).idx $(MANNAME).out \
# $(MANNAME).toc $(MANAUX) .btmp
dist_doc_DATA = $(docfiles)
Что мне здесь не хватает?