(automake-1.16.info)Alternative


Next: Subpackages Prev: Conditional Subdirectories Up: Directories
Enter node , (file) or (file)node

7.3 An Alternative Approach to Subdirectories
=============================================

If you’ve ever read Peter Miller’s excellent paper, Recursive Make
Considered Harmful (http://miller.emu.id.au/pmiller/books/rmch/), the
preceding sections on the use of make recursion will probably come as
unwelcome advice.  For those who haven’t read the paper, Miller’s main
thesis is that recursive ‘make’ invocations are both slow and
error-prone.

   Automake provides sufficient cross-directory support (1) to enable
you to write a single ‘Makefile.am’ for a complex multi-directory
package.

   By default an installable file specified in a subdirectory will have
its directory name stripped before installation.  For instance, in this
example, the header file will be installed as ‘$(includedir)/stdio.h’:

     include_HEADERS = inc/stdio.h

   However, the ‘nobase_’ prefix can be used to circumvent this path
stripping.  In this example, the header file will be installed as
‘$(includedir)/sys/types.h’:

     nobase_include_HEADERS = sys/types.h

   ‘nobase_’ should be specified first when used in conjunction with
either ‘dist_’ or ‘nodist_’ (Note: Fine-grained Distribution Control).
For instance:

     nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg

   Finally, note that a variable using the ‘nobase_’ prefix can often be
replaced by several variables, one for each destination directory (Note:
Uniform).  For instance, the last example could be rewritten as
follows:

     imagesdir = $(pkgdatadir)/images
     soundsdir = $(pkgdatadir)/sounds
     dist_images_DATA = images/vortex.pgm
     dist_sounds_DATA = sounds/whirl.ogg

This latter syntax makes it possible to change one destination directory
without changing the layout of the source tree.

   Currently, ‘nobase_*_LTLIBRARIES’ are the only exception to this
rule, in that there is no particular installation order guarantee for an
otherwise equivalent set of variables without ‘nobase_’ prefix.

   ---------- Footnotes ----------

   (1) We believe.  This work is new and there are probably warts.
Note: Introduction, for information on reporting bugs.


automatically generated by info2www version 1.2.2.9