Working with Tools
The GPR tool suite includes several companion tools that share the same project
model as GPRbuild. Tools that operate on existing project trees all accept the
standard project options (-P, -X, -aP). A separate group of tools
generates GPR project files as output rather than consuming them.
Each tool is fully documented in the GPR Reference Manual; this chapter provides a task-oriented overview and the most commonly used options.
Tools that operate on project trees
gprclean
gprclean removes the build artifacts produced by GPRbuild: object files,
ALI files, libraries, executables, and binder-generated files. It reads the
same project tree to know exactly what was produced and where.
$ gprclean -P myproject.gpr # clean root project only
$ gprclean -P myproject.gpr -r # clean entire project tree
Key options:
-rClean all projects in the tree, not just the root.
-cDelete only compiler-generated files (object files, ALI files). Skip executables and libraries.
-nDry run: list the files that would be deleted without removing them.
-pRemove empty object, library, and executable directories after cleaning.
See the GPR Reference Manual, chapter gprclean, for the complete option reference.
gprinstall
gprinstall copies build results into a target installation prefix. It
records every installed file in a manifest, enabling precise uninstall later.
$ gprinstall -P mylib.gpr --prefix=/usr/local
$ gprinstall -P mylib.gpr --prefix=/usr/local --uninstall
$ gprinstall --list
Key options:
--prefix=<dir>Root installation directory. Defaults to the active toolchain prefix.
--mode=<dev|usage>dev(default) installs sources, ALI files, and libraries for use as a development dependency.usageinstalls only what end users need (shared libraries, executables).--build-name=<name>Tag the installation with a build variant name (e.g.
debug,production). Allows multiple variants to coexist under the same prefix.-rInstall all imported projects, not just the root.
--uninstallRemove files recorded in the manifest for the named project.
--listPrint all installed packages found under the prefix.
See the GPR Reference Manual, chapter gprinstall, for the complete option reference.
gprls
gprls lists the sources, units, objects, and dependencies of a project
tree. It reads the build database to report the up-to-date status of each
artifact.
$ gprls -P myproject.gpr -s # list source files
$ gprls -P myproject.gpr -o # list object files
$ gprls -P myproject.gpr -d # list dependencies with status
Key options:
-sPrint source file for each compilation unit.
-oPrint object file for each compilation unit.
-uPrint unit name for each Ada compilation unit.
-dList source file dependencies with their up-to-date status (
OKorDIF).-UInclude sources from all projects in the tree, not just the root.
--closureCompute the transitive compilation closure of the named source files.
See the GPR Reference Manual, chapter gprls, for the complete option reference.
gprinspect
gprinspect is a diagnostic tool that loads a project tree and displays its
structure: project relationships, source directories, attributes, packages,
variables, and type definitions. It is useful for understanding how a project
tree is resolved and for debugging unexpected attribute values.
$ gprinspect -P myproject.gpr --all -r
Key options:
--display=<textual|json|json-compact>Output format.
textual(default) is human-readable;jsonis suited for tool integration.-rDisplay all projects in the tree, not just the root.
--allDisplay attributes, packages, variables, and type definitions.
-cInclude attributes inherited from the active configuration project.
See the GPR Reference Manual, chapter gprinspect, for the complete option reference.
Tools that generate project files
Unlike the tools above, the following tools produce GPR files as their output rather than loading and acting on an existing project tree.
gprconfig
gprconfig probes the host for available compilers and generates a
configuration project (.cgpr) describing the selected toolchains to all
GPR tools. It can be run interactively for guided toolchain selection, or
in batch mode for scripted workflows, producing a persistent configuration
project
as an alternative to passing --autoconf to a GPR tool.
$ gprconfig # interactive selection
$ gprconfig --batch --config=Ada # non-interactive, Ada compiler only
$ gprconfig --batch --config=Ada --config=C -o my.cgpr
Key options:
--target=<name>Select compilers for the given target. Defaults to native. Use
allto list compilers for all known targets.--batchNon-interactive mode; compiler selection is driven entirely by
--configoptions.--config=<selector>Pre-select a compiler. The selector is a comma-separated list of fields:
language,version,runtime,path,name. Only the language field is required; trailing empty fields may be omitted. May be repeated (at most once per language).$ gprconfig --batch --config=Ada # any Ada compiler $ gprconfig --batch --config=Ada,,native # Ada, native runtime $ gprconfig --batch --config=Ada,14,,/opt/gnat/bin # Ada 14, specific path
-o <file>Write the configuration project to the given file. Defaults to
default.cgprin the GPRbuild configuration directory.--show-targetsPrint the list of targets for which compilers are available, then exit.
See the GPR Reference Manual, chapter gprconfig, for the complete option reference.
gprname
gprname scans source directories for Ada source files, identifies the Ada
units they contain, and generates a GPR project file with a Naming package
that maps each unit to its source file. It is the standard tool for setting up
a project whose sources do not follow the default GNAT naming conventions.
$ gprname -P myproject.gpr -d src/
This creates (or updates) myproject.gpr and a companion
myproject_naming.gpr containing the Naming package. A source list file
myproject_source_list.txt is also written.
Key options:
-d <dir>Add a source directory to scan. Append
/**to search the directory and all its subdirectories recursively. May be repeated.-f <pattern>Add a filename pattern for C sources.
-x <pattern>Exclude files matching a pattern from Ada source scanning.
--andBegin a new section with different source directories or patterns.
See the GPR Reference Manual, chapter gprname, for the complete option reference.