GNAT GPS IDE не привязывается и связывается со странной ошибкой

Я пытаюсь использовать GPS IDE в качестве альтернативного инструмента разработки в OS X El Capitan (отходя от OS X 10.5 Xcode 3.0). Но я наткнулся на одну странную ошибку:

gnat bind myprog.bexch
gnatbind: Cannot find: myprog.bexch.ali
gprbuild: unable to bind myprog.adb [2016-01-20 18:49:07] process
exited with status 4, 100% (13/13), elapsed time: 04.77s

В моем каталоге я могу найти только myprog.bexch. Похоже, gnatbind не создает myprog.bexch.ali

Мой георадар выглядит так:

project Amygdala_Cortex is

    for Object_Dir use "Build/";
    for Exec_Dir use "Build/Debug/";
    for Library_Name use "";
    for Library_Ali_Dir use "";
    for Library_Kind use "static";


    package Compiler is
        for Default_Switches ("ada") use ("-g", "-O2", "-I/opt/local/include/aws", "-I/opt/local/include/aws/components");
    end Compiler;

    package Binder is
        for Driver ("ada") use "/usr/local/gnat/bin/gnatbind";
    end Binder;

    package Linker is
        for Linker_Options use ();
    end Linker;

    for Main use ("amygdala_cortex.adb");

end Amygdala_Cortex;

По-видимому, у меня нет gprbind в моих каталогах.

Я сделал что-то не так или что-то пропустил в георадаре?

Я использую gnat-gpl-2015-x86_64-darwin (GNAT GPL 2015 (20150428-49)) на El Capitan (10.11.2).

Спасибо.


person Adrian Hoe    schedule 20.01.2016    source источник
comment
Сообщение об ошибке предполагает, что файл .ali не был создан для myprog.bexch, то есть что-то с именем myprog.bexch.ad[s|b] не было скомпилировано. (Или, возможно, в неправильной папке). Что указывает на что-то неправильное ранее в процессе сборки, да?   -  person user_1818839    schedule 20.01.2016
comment
Все нормально скомпилировано. Были .ali и .o, и я думал, что myprog.bexch был создан gnatbind. Да?   -  person Adrian Hoe    schedule 20.01.2016
comment
Включая названный .ali?   -  person user_1818839    schedule 20.01.2016
comment
Да, myprog.ali и myprog.o   -  person Adrian Hoe    schedule 20.01.2016
comment
Никогда такого не видел. Может на маке привязка работает по другому, буду скидывать...   -  person user_1818839    schedule 20.01.2016
comment
Я подозреваю, что gnatbind не был привязан или не имел соответствующего переключателя. Да? Что тогда?   -  person Adrian Hoe    schedule 20.01.2016
comment
Что ж, поиск в Google gnatbind .bexch дает ровно ОДИН ответ, что предполагает, что .bexch является файлом, сгенерированным связующим, по-видимому, специфичным для Mac. Поэтому нам, вероятно, нужен Саймон... Вы можете найти некоторые подсказки в его блоге по адресу forward-in. -code.blogspot.co.uk   -  person user_1818839    schedule 20.01.2016
comment
Я почти уверен, что поведение gprbuild не зависит от ОС (по крайней мере, в том, что касается этой проблемы). Как говорит @manuBriot, вы не должны переопределять Binder’Driver (почему?). Здесь gprbuild запускает gprbind main.bexch, который запускает gnatbind main.ali, который генерирует и компилирует b__main.adb. Кроме того, но это не имеет значения, в проекте не должно быть атрибутов, связанных с библиотекой.   -  person Simon Wright    schedule 20.01.2016


Ответы (2)


Я думаю, вы должны попытаться закомментировать атрибут Binder'Driver. Позвольте gprbuild самостоятельно найти и запустить gnatbind по мере необходимости. Он найдет его в вашем PATH с помощью инструмента с именем gprconfig, который создает файл конфигурации (обычно auto.cgpr).

Вы используете AWS. Не используйте переключатели -I в компиляторе, вместо этого просто добавьте

with "aws";

в вашем проекте, который добавит соответствующие переключатели для компилятора, компоновщика,...

person manuBriot    schedule 20.01.2016
comment
Да. Оно работает! Я перехожу на El Capitan и GPS от 10.5 и Xcode 3.0. Вы, ребята, рок! - person Adrian Hoe; 20.01.2016

Спасибо за помощь.

Вот мой новый георадар на случай, если у кого-то возникнет похожая проблема:

with "aws";

project myprog is

   for Object_Dir use "Build/";
   for Exec_Dir use "Build/Debug/";
   for Library_Name use "";
   for Library_Ali_Dir use "";
   for Library_Kind use "static";

   package Compiler is
      for Default_Switches ("ada") use ("-g", "-O2");
   end Compiler;


   package Linker is
      for Linker_Options use ();
   end Linker;

   for Main use ("myprog.adb");

end myprog;
person Adrian Hoe    schedule 20.01.2016