Next: , Previous: Set compiler options, Up: Compiling Examples

6.3 Set source search path

In this example, we show how to deal with files in more than one directory. We start with the same code as in No project files; create those files (with the errors present)

Create the directory Example_3, containing:

hello_pkg.ads:

     package Hello_Pkg is
        procedure Say_Hello;
     end Hello_Pkg;

hello_pkg.adb:

     with Ada.Text_IO;
     package Hello_Pkg is
        procedure Say_Hello
        is begin
           Ada.Text_IO.Put_Line ("Hello from hello_pkg.adb");
        end Say_Hello;
     end Hello_Pkg;

These are the same files from example 1; hello_pkg.adb has an error on line 2.

In addition, create a directory Example_3/Other, containing these files:

Other/hello_3.adb:

     with Hello_Pkg;
     with Ada.Text_IO; use Ada.Text_IO;
     procedure Hello_3
     is begin
        Hello_Pkg.Say_Hello;
        Put_Line ("From hello_3");
     end Hello_3;

There are no errors in this file.

Other/other.adp:

     src_dir=..
     comp_opt=-I..

Note that there must be no trailing spaces.

In buffer hello_3.adb, invoke ‘Ada | Project | Load...’, and select Example_3/Other/other.adp.

Then, again in hello_3.adb, invoke ‘Ada | Set main and Build’. You should get a *compilation* buffer containing something like (the directory paths will be different):

     cd c:/Examples/Example_3/Other/
     gnatmake -o hello_3 hello_3 -g -cargs -I.. -bargs  -largs
     gcc -c -g -I.. hello_3.adb
     gcc -c -I./ -g -I.. -I- C:\Examples\Example_3\hello_pkg.adb
     hello_pkg.adb:2:08: keyword "body" expected here [see file name]
     gnatmake: "C:\Examples\Example_3\hello_pkg.adb" compilation error

Compare the -cargs option to the compiler output in Set compiler options; this shows that other.adp is being used to set the compiler options.

Move to the error with C-x `. Ada mode searches the list of directories given by src_dir for the file mentioned in the compiler error message.

Fixing the error, linking and running the code proceed as in No project files.