Next: , Previous: No project files, Up: Compiling Examples

6.2 Set compiler options

This example illustrates using an Emacs Ada mode project file to set a compiler option.

If you have files from Example_1 open in Emacs, you should close them so you don't get confused. Use menu ‘File | Close (current buffer)’.

In directory Example_2, create these files:

hello.adb:

     with Ada.Text_IO;
     procedure Hello
     is begin
        Put_Line("Hello from hello.adb");
     end Hello;

This is the same as hello.adb from Example_1. It has two errors; missing “use Ada.Text_IO;”, and no space between Put_Line and its argument list.

hello.adp:

     comp_opt=-gnatyt

This tells the GNAT compiler to check for token spacing; in particular, there must be a space preceding a parenthesis.

In buffer hello.adb, invoke ‘Ada | Project | Load...’, and select Example_2/hello.adp.

Then, again in buffer hello.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_2/
     gnatmake -o hello hello -g -cargs -gnatyt  -bargs  -largs
     gcc -c -g -gnatyt hello.adb
     hello.adb:4:04: "Put_Line" is not visible
     hello.adb:4:04: non-visible declaration at a-textio.ads:264
     hello.adb:4:04: non-visible declaration at a-textio.ads:260
     hello.adb:4:12: (style) space required
     gnatmake: "hello.adb" compilation error

Compare this to the compiler output in No project files; the gnatmake option -cargs -gnatq -gnatQ has been replaced by -cargs -gnaty, and an additional error is reported in hello.adb on line 4. This shows that hello.adp is being used to set the compiler options.

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