Multiple Directories
Larger projects require more than one directory. Project developers are free to organize directories as they see fit. To make it clear for others, the top level directory should contain project wide information and a Makefile to build all project directories. The build system only only aware of the current directory. Build dependencies between directories is encoded using raw Make commands (e.g. See common/utility/Makefile).
Each project directory can contain a single library plus several programs. A project with multiple libraries will need a separate directory for each library. C++ Libraries use header files to define their interface. Header files are installed along with the library. Some header files are only used internally and are not installed. Set the INCLUDE_H variable to only those headers that are to be installed.