Next: Associative Array Attributes, Previous: Variables, Up: Project File Syntax
A project (and its packages) may have attributes that define the project's properties. Some attributes have values that are strings; others have values that are string lists.
There are two categories of attributes: simple attributes and associative arrays (see Associative Array Attributes).
The names of the attributes are restricted; there is a list of project attributes, and a list of package attributes for each package. The names are not case sensitive.
The project attributes are as follows (all are simple attributes):
| Attribute Name | Value
|
Source_Files
| string list
|
Source_Dirs
| string list
|
Source_List_File
| string
|
Object_Dir
| string
|
Exec_Dir
| string
|
Main
| string list
|
Languages
| string list
|
Library_Dir
| string
|
Library_Name
| string
|
Library_Kind
| string
|
Library_Elaboration
| string
|
Library_Version
| string
|
The attributes for package Naming are as follows
(see Naming Schemes):
| Attribute Name | Category | Index | Value
|
Specification_Suffix
| associative array | language name | string
|
Implementation_Suffix
| associative array | language name | string
|
Separate_Suffix
| simple attribute | n/a | string
|
Casing
| simple attribute | n/a | string
|
Dot_Replacement
| simple attribute | n/a | string
|
Specification
| associative array | Ada unit name | string
|
Implementation
| associative array | Ada unit name | string
|
Specification_Exceptions
| associative array | language name | string list
|
Implementation_Exceptions
| associative array | language name | string list
|
The attributes for package Builder, Compiler, Binder,
Linker, Cross_Reference, and Finder
are as follows (see Switches and Project Files).
| Attribute Name | Category | Index | Value
|
Default_Switches
| associative array | language name | string list
|
Switches
| associative array | file name | string list
|
In addition, package Builder has a single string attribute
Local_Configuration_Pragmas and package Builder has a single
string attribute Global_Configuration_Pragmas.
The attribute for package Glide are not documented: they are for
internal use only.
Each simple attribute has a default value: the empty string (for string-valued attributes) and the empty list (for string list-valued attributes).
Similar to variable declarations, an attribute declaration defines a new value for an attribute.
Examples of simple attribute declarations:
for Object_Dir use "objects";
for Source_Dirs use ("units", "test/drivers");
A simple attribute declaration starts with the reserved word for,
followed by the name of the attribute, followed by the reserved word
use, followed by an expression (whose kind depends on the attribute),
followed by a semicolon.
Attributes may be referenced in expressions.
The general form for such a reference is <entity>'<attribute>:
the entity for which the attribute is defined,
followed by an apostrophe, followed by the name of the attribute.
For associative array attributes, a litteral string between parentheses
need to be supplied as index.
Examples are:
project'Object_Dir
Naming'Dot_Replacement
Imported_Project'Source_Dirs
Imported_Project.Naming'Casing
Builder'Default_Switches("Ada")
The entity may be:
project for an attribute of the current project
Example:
project Prj is
for Source_Dirs use project'Source_Dirs & "units";
for Source_Dirs use project'Source_Dirs & "test/drivers"
end Prj;
In the first attribute declaration, initially the attribute Source_Dirs
has the default value: an empty string list. After this declaration,
Source_Dirs is a string list of one element: "units".
After the second attribute declaration Source_Dirs is a string list of
two elements: "units" and "test/drivers".
Note: this example is for illustration only. In practice, the project file would contain only one attribute declaration:
for Source_Dirs use ("units", "test/drivers");