2013-05-29 2 views
0

У меня есть каталог со следующими файламиделают + текс: файл не найден

➜ hrrep git:(master) ✗ ls -l 
total 1000 
drwxrwxrwx 22 zmjones staff 748 May 28 23:28 data 
-rw-rw-rw- 1 zmjones staff 7180 May 20 16:17 data.R 
drwxrwxrwx 9 zmjones staff 306 May 28 23:38 figures 
-rw-r--r-- 1 zmjones staff 85841 May 28 23:23 hill_jones_hr.bib 
-rw-r--r-- 1 zmjones staff 29193 May 28 22:23 hill_jones_hr.tex 
-rw-r--r-- 1 zmjones staff 572 May 28 23:46 makefile 
-rw-rw-rw- 1 zmjones staff 9588 May 28 22:47 models.R 
drwxrwxrwx 3 zmjones staff 102 May 28 23:28 papers 
drwxrwxrwx 9 zmjones staff 306 May 28 23:28 tex 
-rw-r--r-- 1 zmjones staff 1483 May 20 12:58 un_data.py 

Эти файлы описываются Makefile (с помощью GNU Make 3.81)

all: ./data/cat_un_data.csv ./data/rep.csv ./figures/*.png ./hj-hr.pdf 

./data/cat_un_data.csv: un_data.py #refreshing one will refresh all 
     python un_data.py 

./data/rep.csv: data.R ./data/cat_un_data.csv 
     R CMD BATCH --no-save --no-restore data.R 

./figures/*.png: models.R ./data/rep.csv 
     R CMD BATCH --no-save --no-restore models.R 

TEXMCD := pdflatex -interaction=batchmode 

hill_jones_hr.pdf: hill_jones_hr.tex ./figures/*.png 
    $(TEXCMD) $< 
    ]bibtex *.aux 
    $(TEXCMD) $< 
    $(TEXCMD) $< 
    find . | egrep ".*((\.(aux|log|blg|bbl|out|Rout|Rhistory|DS_Store))|~)$$" | xargs rm 
    rm -rf auto 

Makefile, кажется, работает хорошо, пока он не дойдет до цели hll_jones_hr.pdf, где она терпит неудачу с ошибкой:

hill_jones_hr.tex 
make: hill_jones_hr.tex: No such file or directory 
make: *** [hill_jones_hr.pdf] Error 1 

Я не понимаю, что такое Prob лемм есть. Документ компилируется при выполнении pdflatex и bibtex вручную. Я попытался добавить флаг ошибки игнорирования безрезультатно. Я предполагаю, что это глупая ошибка, которую я делаю. Эта папка находится в Dropbox, если это имеет значение. Я также попытался добавить префикс ./ как к файлу .tex, так и к цели .pdf; ошибка была такой же.

ответ

3

Проблема заключается в том, что переменная $(TEXCMD) не определен, так что ваша команда:

$(TEXCMD) $< 

расширяется только $< или просто имя файла, который не является юридической командой самого по себе.

+0

Я просто неправильно описал это. Facepalm. Я не понимаю, как я должен был перейти от ошибки «файл не найден» в TEXCMD не определен. Теперь я вижу, как это работает. Благодаря! – Zach

+1

Да, make будет печатать команду, которую он выполняет. Если это не та команда, которую вы ожидали от ее выполнения, так как в этом случае, когда «латекс» или какая-либо другая команда не существует, вам нужно посмотреть правило makefile и выяснить, что не так. Также существует опция '--warn-undefined-variables' для GNU' make', однако обратите внимание, что это может дать вам много ложных срабатываний, если вы полагаетесь на обещание make о том, что неопределенные значения пустые. – MadScientist

0

./hill_jones_hr.tex вместо hill_jones_hr.tex и повторите попытку.

+0

Нет, что не получилось. Я также попытался добавить '. /' К цели PDF, но безрезультатно. – Zach