Go to the first, previous, next, last section, table of contents.

## Recursive Use of `make`

Recursive use of `make` means using `make` as a command in a makefile. This technique is useful when you want separate makefiles for various subsystems that compose a larger system. For example, suppose you have a subdirectory ``subdir'` which has its own makefile, and you would like the containing directory's makefile to run `make` on the subdirectory. You can do it by writing this:

    subsystem:
            cd subdir && $(MAKE)

or, equivalently, this (see section Summary of Options):

    subsystem:
            $(MAKE) -C subdir

You can write recursive `make` commands just by copying this example, but there are many things to know about how they work and why, and about how the sub-`make` relates to the top-level `make`.

For your convenience, GNU `make` sets the variable `CURDIR` to the pathname of the current working directory for you. If `-C` is in effect, it will contain the path of the new directory, not the original. The value has the same precedence it would have if it were set in the makefile (by default, an environment variable `CURDIR` will not override this value). Note that setting this variable has no effect on the operation of `make`

- MAKE Variable: The special effects of using ``$(MAKE)'`.
- Variables/Recursion: How to communicate variables to a sub-`make`.
- Options/Recursion: How to communicate options to a sub-`make`.
- -w Option: How the ``-w'` or ``--print-directory'` option helps debug use of recursive `make` commands.

Go to the first, previous, next, last section, table of contents.