"Адское" программирование Ada-95 -Компилятор GNAT

         

Расширенный пример



4 Расширенный пример

Предположим, что у нас есть две программы prog1 и prog2, исходные файлы которых расположены в соответствующих каталогах.Предположим также, что нам необходимо осуществлять сборку этих программ с помощью одной команды запуска утилиты gnatmake, и мы хотим сохранять объектные файлы этих программ в подкаталогах ".build" соответствующих каталогов с исходными файлами.Кроме того, нам необходимо иметь внутри каждого подкаталога ".build" два отдельных подкаталога "release" и "debug", которые будут содержать объектные файлы скомпилированные с различными наборами опций компиляции.

Более наглядно, мы имеем следующую структуру каталогов:

main |- prog1 | |- .build | | debug

| | release |- prog2 |- .build | debug | release

Рассмотрим файлы проектов, которые нам необходимо создать в каталоге "main", для сопровождения этой структуры:

  1. Создадим проект Common с пакетом Compiler, который указывает опции компиляции:

    File "common.gpr":project Common is for Source_Dirs use (); -- нет исходных файлов type Build_Type is ("release", "debug"); Build : Build_Type := External ("BUILD", "debug"); package Compiler is case Build is when "release" => for Default_Switches ("Ada") use ("-O2"); when "debug" => for Default_Switches ("Ada") use ("-g"); end case; end Compiler;end Common;

  2. Создадим отдельные проекты для двух программ:

    File "proggpr":with "common"; project Prog1 is for Source_Dirs use ("prog1"); for Object_Dir use "prog1/.build/" & Common.Build; package Compiler renames Common.Compiler;end Prog1;

    File "proggpr":with "common"; project Prog2 is for Source_Dirs use ("prog2"); for Object_Dir use "prog2/.build/" & Common.Build; package Compiler renames Common.Compiler;end Prog2;

  3. Создадим проект-обертку Main:

    File "main.gpr":with "common"; with "prog1"; with "prog2"; project Main is package Compiler renames Common.Compiler;end Main;

  4. В заключение, необходимо создать процедуру-заглушку, которая указывает в своем спецификаторе with (прямо или косвенно) все файлы с исходными текстами двух программ.

Теперь, с помощью команды

gnatmake -Pmain dummy

можно осуществить сборку программ для режима отладки (Debug), а с помощью команды

gnatmake -Pmain -XBUILD=release

можно осуществить сборку программ для режима реализации (Release).



Содержание раздела








Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий