Skip to content

Instantly share code, notes, and snippets.

@Nemo157
Created August 19, 2010 23:43
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Nemo157/539229 to your computer and use it in GitHub Desktop.
Save Nemo157/539229 to your computer and use it in GitHub Desktop.
A simple Makefile for LaTeX projects.
# Author:
# Wim Looman
# Copyright:
# Copyright (c) 2010 Wim Looman
# License:
# GNU General Public License (see http://www.gnu.org/licenses/gpl-3.0.txt)
## User interface, just set the main filename and it will do everything for you
# If you have any extra code or images included list them in EXTRA_FILES
# This should work as long as you have all the .tex, .sty and .bib files in
# the same folder.
MAINFILE = report
EXTRA_FILES := $(shell echo "images/*")
## Inner workings
OBJECTS = $(shell echo *.tex)
STYLES = $(shell echo *.sty)
BIB = $(shell echo *.bib)
OBJECTS_TEST = $(addsuffix .t, $(basename $(OBJECTS)))
STYLES_TEST = $(addsuffix .s, $(basename $(STYLES)))
BIB_TEST = bib
TESTS = $(addprefix make/, $(OBJECTS_TEST) $(STYLES_TEST) $(BIB_TEST))
TEMP2 := $(shell mkdir make 2>/dev/null)
.PHONY: all
all: $(MAINFILE).dvi $(MAINFILE).pdf
$(MAINFILE).dvi: $(TESTS) $(EXTRA_FILES)
latex $(MAINFILE)
latex $(MAINFILE)
$(MAINFILE).pdf: $(TESTS) $(EXTRA_FILES)
pdflatex $(MAINFILE)
pdflatex $(MAINFILE)
make/%.t: %.tex
touch $@
make/%.s: %.sty
touch $@
make/bib: $(BIB)
latex $(MAINFILE)
bibtex $(MAINFILE)
touch $@
.PHONY: clean
clean:
-rm -f *.aux
-rm -f *.log
-rm -f *.toc
-rm -f *.bbl
-rm -f *.blg
-rm -f *.out
-rm -f make/bib
.PHONY: cleanall
cleanall: clean
-rm -f *.pdf
-rm -f *.ps
-rm -f *.dvi
-rm -rf ./make
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment