Вы используете макрос $(shell...)
make, но не хотите выполнять оценку оболочки.Ваша переменная CTAN
устанавливается на результат оценки оболочкой:
ctanbib $pkg >> MyPackage-ctan.bib
Когда я пишу " результат ", я имею в виду то, что эта команда выводит на стандартный вывод,Поскольку, вероятно, не существует переменной оболочки pkg
, установленной для оболочки, которая выполняет эту оценку, это, вероятно, совпадает с тем, что оценка оболочки:
ctanbib >> MyPackage-ctan.bib
отправляет на стандартный вывод.А поскольку вы перенаправляете стандартный вывод в файл, это пустая строка.Итак, вашей переменной CTAN
назначена пустая строка.
Попробуйте вместо этого:
CTAN := ctanbib $$pkg >> $(NAME)-ctan.bib
.Правая часть назначения будет расширена командой make при назначении переменной make CTAN
.В результате будет присвоена переменная CTAN
make:
ctanbib $pkg >> MyPackage-ctan.bib
- это то, что вы хотите в своем рецепте после того, как make расширится $(CTAN)
.Пример с командой ctanlib
, заключенной в echo
:
$ cat Makefile
NAME = MyPackage
PKG := datatool biblatex archaeologie
CTAN := echo "ctanbib $$pkg >> $(NAME)-ctan.bib"
.PHONY: getCTAN
getCTAN:
rm -f $(NAME)-ctan.bib
for pkg in $(PKG);\
do \
$(CTAN); \
done
$ make
for pkg in datatool biblatex archaeologie;\
do \
echo "ctanbib $pkg >> MyPackage-ctan.bib"; \
done
ctanbib datatool >> MyPackage-ctan.bib
ctanbib biblatex >> MyPackage-ctan.bib
ctanbib archaeologie >> MyPackage-ctan.bib