In a project that contains source files, their names may be specified by the
Source_Files (a string list) or
(a string). Source file names never include any directory information.
If the attribute
Source_Files is given an explicit value, then each
element of the list is a source file name.
for Source_Files use ("main.adb"); for Source_Files use ("main.adb", "pack1.ads", "pack2.adb");
If the attribute
Source_Files is not given an explicit value,
but the attribute
Source_List_File is given a string value,
then the source file names are contained in the text file whose path name
(absolute or relative to the directory of the project file) is the
value of the attribute
Each line in the file that is not empty or is not a comment contains a source file name.
for Source_List_File use "source_list.txt";
By default, if neither the attribute
Source_Files nor the attribute
Source_List_File is given an explicit value, then each file in the
source directories that conforms to the project's naming scheme
(see Naming Schemes) is an immediate source of the project.
A warning is issued if both attributes
Source_List_File are given explicit values. In this case, the attribute
Each source file name must be the name of one existing source file in one of the source directories.
Source_Files attribute whose value is an empty list
indicates that there are no source files in the project.
If the order of the source directories is known statically, that is if
"/**" is not used in the string list
Source_Dirs, then there may
be several files with the same source file name. In this case, only the file
in the first directory is considered as an immediate source of the project
file. If the order of the source directories is not known statically, it is
an error to have several files with the same source file name.
Projects can be specified to have no Ada source
files: the value of (
Source_Files may be an empty
list, or the
"Ada" may be absent from
for Source_Dirs use (); for Source_Files use (); for Languages use ("C", "C++");
Otherwise, a project must contain at least one immediate source.
Projects with no source files are useful as template packages
(see Packages in Project Files) for other projects; in particular to
define a package
Naming (see Naming Schemes).