2014-08-23 2 views
0

У меня есть make-файл для создания списков публикаций HTML для разных авторов из одного файла BibTex. Экспорт осуществляется с помощью bibtex2html и работает как шарм. Но я застрял в названии правила. Я хочу, чтобы makefile был как можно более общим, чтобы только адаптировать список результатов, когда начинается новый коллега, или кто-то заканчивает его кандидатскую диссертацию.Ошибка с статическим шаблоном

Последовательность действий следующая:

  1. bib.bib дается
  2. Извлечение публикаций из всех авторов в results в отдельные файлы: `bib2bib -c 'автор: "$ *"' нагрудник. bib '
  3. Теперь есть файлы для каждого автора, например нагрудник-Author1.bib, нагрудник-Author2.bib ...
  4. Преобразование файлов в HTML: bibtex2html -d -r -o [email protected] [email protected]
  5. Теперь есть файл с именем нагрудник-Author1.html, нагрудник-Author2.html, ....

Вот текущий Makefile я застрял:

objects = bib-*.bib 
results = Author1 Author2 

.PHONY : clean cleanall all $(results) 
.INTERMEDIATE : bib-*.bib 

all : $(results) 

$(results) : % : bib-%.html 

bib-%.bib : 
    TMPDIR=. bib2bib -c 'author : "$*"' bib.bib 

bib-%.html : %.html : %.bib 
    TMPDIR=. bibtex2html -d -r -o [email protected] [email protected] 

#Left the clean and cleanall targets out to shorten the code snippet 

Прямо сейчас я называю это Makefile с простым make, который выполняет все цели. Это вызывает цель $(result), которая вызывает цель bib -%. Html для каждого автора в результате. И вот возникает проблема: когда вызывается, делайте остановки с ошибкой смешанных неявных и статических правил шаблонов.

Что я хотел сделать здесь, это взять имя правила со статическим шаблоном% .html и преобразовать его в предварительное условие% .bib. Но, видимо, я делаю что-то неправильно. Любая помощь оценивается.

+0

только догадка: что 'сделать -rR' сказать? – reinierpost

+0

Вы не можете иметь символ шаблона ('%') во всех трех частях правила статического шаблона. Мне не совсем ясно, чего вы пытаетесь достичь с помощью правила статического шаблона. Не могли бы вы немного расширить, представив пример некоторых имен файлов, к которым вы хотите применить это статическое правило? –

+0

@ReinierTorenbeek Спасибо за ваш ответ. У меня есть следующий рабочий процесс: bib.bib. Извлеките публикации одного автора из bib.bib с помощью 'bib2bib -c 'author:" Authorname "' bib.bib'into файл с именем bib-Authorname.bib. Используйте этот файл в качестве входа для bibtex2html, чтобы преобразовать его в html, используя 'bibtex2html -o bib-Authorname.html bib-Authorname.bib' – PVitt

ответ

3

В этом файле makefile есть несколько неправильных или, по крайней мере, нечетных. Ваш вопрос не совсем ясен, поэтому некоторые догадки понадобятся.

Сначала попробуйте правила с простыми диагностическими командами, чтобы получить правильную последовательность. Я думаю, что это то, что вы хотите:

bib-%.bib : 
    @echo trying to build [email protected] 

bib-%.html : bib-%.bib 
    @echo trying to build [email protected] after $< 

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

bib-%.bib : 
    TMPDIR=. bibtex2html-1.96-osx-x86_64/bib2bib -c 'author : "$*"' -s '$$date' bib.bib 

bib-%.html : bib-%.bib 
    @echo trying to build [email protected] after $< 

Тогда другой. Использование автоматических переменных в правиле HTML странно, и я подозреваю, что это ближе к тому, что вы собираетесь:

bib-%.bib : 
    TMPDIR=. bibtex2html-1.96-osx-x86_64/bib2bib -c 'author : "$*"' -s '$$date' bib.bib 

bib-%.html : bib-%.bib 
    TMPDIR=. bibtex2html-1.96-osx-x86_64/bibtex2html -d -r --nodoc --nobibsource --no-header --no-footer -o [email protected] $< 
+0

Отлично. Это именно то, что я искал. Я думаю, что меня смутило все статические правила, которые я читал при создании цели $ (results). – PVitt

Смежные вопросы