Задать вопрос
@faragly

Как в Makefile переместить скомпилированный pdf-файл из директории с переименованием (добавить суффикс)?

Здравствуйте! Использую для генерации документации проекта Sphinx-doc, для простоты есть базовый Makefile, который позволяет собрать html или pdf простой командой `make html` или `make latexpdf`. Так как документация проекта пишется на английском и русском языках, то генерацию для русского языка запускаю добавлением дополнительного аргумента `LANG=ru` (по умолчанию генерируется en). В зависимости от языка подхватывается соответствующий языку источник, файл pdf генерируется с одинаковым именем для любого языка в папку с latex файлами. Необходимо собранный pdf-файл переместить в другую директорию и добавить суффикс _ru или _en.

# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
LANG          = en
SPHINXOPTS    = -c sphinx/source -a -D language=$(LANG)
SPHINXBUILD   = sphinx-build
PAPER         =
BUILDDIR      = .

# Internal variables.
ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source/$(LANG)

.PHONY: help
help:
	@echo "Please use \`make <target>' where <target> is one of"
	@echo "  html       to make standalone HTML files, you can set LANG=ru (en default)"
	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"

.PHONY: html
html:
	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html/$(LANG)
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html/$(LANG)."

.PHONY: latex
latex:
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex/$(LANG)
	@echo
	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex/$(LANG)."
	@echo "Run \`make' in that directory to run these through (pdf)latex" \
	      "(use \`make latexpdf' here to do that automatically)."

.PHONY: latexpdf
latexpdf:
	rm -rf $(BUILDDIR)/latex/$(LANG)
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex/$(LANG)
	@echo "Running LaTeX files through pdflatex..."
	$(MAKE) -C $(BUILDDIR)/latex/$(LANG) all-pdf
	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex/$(LANG)."


Есть вариант указать имя файла сразу и добавить команду, оно известно:
mv -f $(BUILDDIR)/latex/$(LANG)/documentation.pdf $(BUILDDIR)/pdf/documentation_$(LANG).pdf

но так как имя файла задается в файле конфигурации Sphinx-doc, то не хочется изменять это значение в нескольких местах, нужно решение где нет необходимости знать имя файла.

Еще один вопрос, хочется чтобы сразу генерировалась документация во всех доступных языках, то есть скрипт ищет папки в `source`, формирую массив языков и затем обходил этот массив, помещая текущий язык в переменную LANG.

Простите за нубские вопросы, но с GNU Make раньше не сталкивался, просмотр документации не дал нужных ответов. Спасибо!
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы