>>>>> "Jonathan" == Jonathan Kulp <jonlancek...@gmail.com> writes:
Jonathan> John Mandereau wrote: >> Jonathan Kulp a écrit : >>> I would welcome "best practice" advice on these. Once I'm >>> satisfied with how they work on Linux & Mac (and Windows if anyone >>> wants to help me with them), then I'll put generic filenames and >>> dirnames to change them into examples suitable for the >>> documentation. >> Make always invokes a new shell for each command line (except that >> you can split a shell command or commands sequence on several lines >> with '\'), so you don't need the 'cd ..' >> >> Prefer '&&' over ';' as a command separator, except if you don't >> care whether the first command fails for the execution of the >> second command. In this case, if for some reason there is no 'out' >> directory, you will get a less explicit error than if the shell >> (and then make) would have returned an error "out: no such file or >> directory". >> >> It might be good to separate commands for generating each >> intermediate formats, e.g. in case you define targets or variables >> that can enable different output format from the latex file (PDF, >> HTML with latex2html, ...). >> >> Best, John >> >> PS please attach or quote in the message future revisions of this >> makefile directly, so lazy hackers can grab and comment it more >> easily. >> Jonathan> Thanks for looking at this, John. I've gone through the two Jonathan> makefiles and updated according to your advice, and have Jonathan> also made changes based on recommendations in the GNU Make Jonathan> Manual, such as specifying the shell and defining unusual Jonathan> utilities in variables (viewer as "acroread" in this case). Jonathan> I found that the only situation where && did not work in Jonathan> place of ; was in the "for" loop I use in creating the parts Jonathan> of the stamitz symphony. Why not use some automatic rules, like so: Then your Makefile becomes something like: piece= stamitz SUFFIXES: .ly .pdf .view .ly.pdf: ${LILY} $< all: score parts midi score: ${piece}.pdf parts: Parts/${piece}I.pdf Parts/${piece}II.pdf .view.pdf: ${PDFVIEWER} $*.pdf If you use GNU extensions, then here's the Makefile I generally use, to convert everything in the current directory. --- LYFILES:=${wildcard *.ly} TEXFILES:=${wildcard *.tex} PSFILES:=${LYFILES:.ly=.ps} ${TEXFILES:.tex=.ps} PDFFILES:=${PSFILES:.ps=.pdf} MIDIFILES:=${LYFILES:.ly=.midi} LATEX:=latex LILY:=lilypond CONVERT:=convert-ly OUTDIR:=outdir PS2PDF:= ps2pdf all: ${PSFILES} %.ps %.midi %.pdf: %.update ${LILY} $*.ly %.update: %.ly ${CONVERT} -e $< %.ps: %.tex -[ -d ${OUTDIR} ] && rm -rf ${OUTDIR} mkdir -p ${OUTDIR} lilypond-book -o outdir -f latex $*.tex ( cd outdir; latex $*.tex && dvips -Ppdf -u +lilypond.map -o ../$@ $*.dvi; ) %.pdf: %.ps ${PS2PDF} $< clean: rm -f ${PSFILES} ${PDFFILES} ${MIDIFILES} rm -rf ${OUTDIR} _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel