For example, we can define an aggregate project Agg that groups A, B and C:
aggregate library project Agg is
for Project_Files use ("a.gpr", "b.gpr", "c.gpr");
for Library_Name use ("agg");
for Library_Dir use ("lagg");
end Agg;
Then, when you build with:
gprbuild agg.gpr
This will build all units from projects A, B and C and will create a static library named libagg.a into the lagg directory. An aggregate library project has the same set of restriction as a standard library project.
Note that a shared aggregate library project cannot aggregates a static library project. In platforms where a compiler option is required to create relocatable object files, a Builder package in the aggregate library project may be used:
aggregate library project Agg is
for Project_Files use ("a.gpr", "b.gpr", "c.gpr");
for Library_Name use ("agg");
for Library_Dir use ("lagg");
for Library_Kind use "relocatable";
package Builder is
for Global_Compilation_Switches ("Ada") use ("-fPIC");
end Builder;
end Agg;
With the above aggregate library Builder package, the -fPIC
option will be passed to the compiler when building any source code
from projects a.gpr, b.gpr and c.gpr.