[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.6 Multiple directories

So far, we’ve only dealt with single-directory projects. Automake can also handle projects with many directories. The variable ‘SUBDIRS’ is used to list the subdirectories which should be built. Here is an example from Automake itself:

SUBDIRS = . m4 tests

Automake does not need to know the list of subdirectories statically, so there is no ‘EXTRA_SUBDIRS’ variable. You might think that Automake would use ‘SUBDIRS’ to see which ‘Makefile.am’s to scan, but it actually gets this information from ‘configure.in’. This means that, if you have a subdirectory which is optionally built, you should still list it unconditionally in your call to AC_OUTPUT and then arrange for it to be substituted (or not, as appropriate) at configure time.

Subdirectories are always built in the order they appear, but cleaning rules (e.g., maintainer-clean) are always run in the reverse order. The reason for this odd reversal is that it is wrong to remove a file before removing all the files which depend on it.

You can put ‘.’ into ‘SUBDIRS’ to control when the objects in the current directory are built, relative to the objects in the subdirectories. In the example above, targets in ‘.’ will be built before subdirectories are built. If ‘.’ does not appear in ‘SUBDIRS’, it is built following all the subdirectories.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Ben Elliston on July 10, 2015 using texi2html 1.82.