ada-mode: Set compiler options
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.