У меня есть каталог со следующими файламиделают + текс: файл не найден
➜ 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
; ошибка была такой же.
Я просто неправильно описал это. Facepalm. Я не понимаю, как я должен был перейти от ошибки «файл не найден» в TEXCMD не определен. Теперь я вижу, как это работает. Благодаря! – Zach
Да, make будет печатать команду, которую он выполняет. Если это не та команда, которую вы ожидали от ее выполнения, так как в этом случае, когда «латекс» или какая-либо другая команда не существует, вам нужно посмотреть правило makefile и выяснить, что не так. Также существует опция '--warn-undefined-variables' для GNU' make', однако обратите внимание, что это может дать вам много ложных срабатываний, если вы полагаетесь на обещание make о том, что неопределенные значения пустые. – MadScientist