Конвертировать MakeFile в командную строку или базу - PullRequest
0 голосов
/ 14 мая 2019

В настоящее время я работаю над проектом, который конкретно просит меня не использовать Makefile для построения всех зависимостей, потому что вместо этого весь репозиторий использует bazel для сборки файлов. У меня нулевые знания по MakeFile. Я хочу знать, как преобразовать следующий Makefile в аргументы командной строки, которые я затем могу бросить в простой скрипт Python. Заранее спасибо! Ваше решение очень ценится!

# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS    =
SPHINXBUILD   = sphinx-build
SOURCEDIR     = .
BUILDDIR      = _build

# Put it first so that "make" without argument is like "make help".
help:
    @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
    @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

удалите @, и тогда все команды make будут распечатаны для вас (@ подавляет make, повторяя команды, которые он использует):

help:
    $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

%: Makefile
    $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

Затем запустите make или make help и просмотрите точные строки, которые использует make ... скопируйте / вставьте в скрипт ... или явным образом отобразите их вместо:

help:
    echo $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

%: Makefile
    echo $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

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

0 голосов
/ 14 мая 2019

Если вы выполните команду «make» или «make help», она выполнит:

sphinx-build -M help . _build

Если вы звоните Make с любой другой целью, например, "make foo", и целевой целевой объект еще не существует (или существует, но старше Makefile), он выполнит:

sphinx-build -M foo . _build
...