lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DOCS: include a sample "Makefile"?


From: Werner LEMBERG
Subject: Re: DOCS: include a sample "Makefile"?
Date: Mon, 18 May 2009 07:17:09 +0200 (CEST)

> Does this now resemble something I can make generic and put in the
> docs?

Not yet.  See below for something which fits better the 80 chars line
length limit.

You've forgotten the driver files for the full score and the
movements; I've added it now.  Note that it wouldn't be necessary to
mention the *.ly files explicitly since the pattern rule automatically
looks for them.  Only the additional dependencies must be named.
However, I personally prefer to list them all to avoid confusion.  You
might remove them if you wish.

> Any GNU Make extensions left in there?

Full of them. :-) To be serious: I suggest that we concentrate on GNU
make only since it is (a) available on almost all platforms and (b) is
really much more user friendly than other make programs.

BTW, if you really can't use a `GNU make' binary, you can replace it
with the `makepp' program, written in perl:

  http://makepp.sf.net

A final point which I ask you to change: You should call the parts
something like `stamitz-cello.pdf' instead of just `cello.pdf'.  As
soon as you've written many scores it helps a lot if all output files
have names which makes identification easy.


    Werner


PS: There might be typos in my modifications, so please test them.


======================================================================

#
# This is a Makefile for `GNU make'!  It uses extension
# not available in most other `make' programs.
#

# The name stem of the output files.
piece = stamitz

# The command to run lilypond.
LILY_CMD = lilypond -ddelete-intermediate-files \
                    -dno-point-and-click

# The used suffixes in this Makefile.
.SUFFIXES: .ly .ily .pdf .midi

# Output files are created in the `PDF' subdirectory
# of the current directory.
# Input files are searched in the other directories
# listened in the VPATH variable.
curdir = $(shell pwd)
VPATH = \
  $(curdir)/Scores \
  $(curdir)/PDF \
  $(curdir)/Parts \
  $(curdir)/Notes

# The pattern rule to create PDF and MIDI files
# from a LY input file.
%.pdf %.midi:  %.ly
        cd PDF; $(LILY_CMD) $<

# A shorthand.
notes = \
  cello.ily \
  figures.ily \
  horn.ily \
  oboe.ily \
  trioString.ily \
  viola.ily \
  violinOne.ily \
  violinTwo.ily

# The depencies of the full score.
$(piece).pdf: $(piece).ly $(notes)

# The dependencies of the movements.
$(piece)I.pdf: $(piece)I.pdf $(notes)
$(piece)II.pdf: $(piece)II.pdf $(notes)
$(piece)III.pdf: $(piece)III.pdf $(notes)
$(piece)IV.pdf: $(piece)IV.pdf $(notes)

# The dependencies of the parts.
cello.pdf: cello.ly cello.ily \
                    figures.ily \
                    trioString.ily
horn.pdf: horn.ly horn.ily
oboes.pdf: oboes.ly oboe.ily
viola.pdf: viola.ly viola.ily
violinOne.pdf: violinOne.ly violinOne.ily
violinTwo.pdf: violinTwo.ly violinTwo.ily

# Say `make score' to generate the full score.
.PHONY: score
score: $(piece).pdf

# Say `make movements' to generate files for the
# four movements separately.
.PHONY: movements
movements: $(piece)I.pdf \
           $(piece)II.pdf \
           $(piece)III.pdf \
           $(piece)IV.pdf

# Say `make parts' to generate all parts.
# Say `make foo.pdf' to generate the part for instrument `foo'.
# Example: `make cello.pdf'.
.PHONY: parts
parts: cello.pdf \
       violinOne.pdf \
       violinTwo.pdf \
       viola.pdf \
       oboes.pdf
       horn.pdf

# end of Makefile




reply via email to

[Prev in Thread] Current Thread [Next in Thread]