Next: , Up: GNAT Project Manager

11.1 Introduction

This chapter describes GNAT's Project Manager, a facility that allows you to manage complex builds involving a number of source files, directories, and options for different system configurations. In particular, project files allow you to specify:

Project files are written in a syntax close to that of Ada, using familiar notions such as packages, context clauses, declarations, default values, assignments, and inheritance (see Project File Reference).

Project files can be built hierarchically from other project files, simplifying complex system integration and project reuse (see Organizing Projects into Subsystems).

Several tools support project files, generally in addition to specifying the information on the command line itself). They share common switches to control the loading of the project (in particular ^-P^/PROJECT_FILE=^projectfile and ^-X^/EXTERNAL_REFERENCE=^vbl=value). See Switches Related to Project Files.

The Project Manager supports a wide range of development strategies, for systems of all sizes. Here are some typical practices that are easily handled:

all OS dependencies in a small number of implementation units.

Project files can be used to achieve some of the effects of a source versioning system (for example, defining separate projects for the different sets of sources that comprise different releases) but the Project Manager is independent of any source configuration management tool that might be used by the developers.

The various sections below introduce the different concepts related to projects. Each section starts with examples and use cases, and then goes into the details of related project file capabilities.