Команда оболочки для компиляции C в Gprbuild
Используя GtkAda, я пытаюсь использовать API ресурсов для включения файла Glade непосредственно в мой код.
Для этого мы можем сгенерировать код C из набора ресурсов, используя glib-compile-resources, которые затем могут быть связаны с кодом Ada.
Проблема в том, что этот код на C требует Gtk, который мы обычно получаем из команды pkg-config в Linux, такой как
gcc -c -x c `pkg-config --cflags gio-2.0` myglade.gresource.c
Я хотел бы знать, как предоставить такую же информацию в файле проекта GPRBuild.
К вашему сведению, я уже пытался безуспешно использовать команду pkg-config в пакете компилятора для языка Си. Конечно, мне удалось собрать вручную, но это немного долго:)
2 ответа
Это может работать для вас:
project Config_Demo is
Pkg_Config := external_as_list ("PKG_CONFIG", " ");
package Compiler is
-- only this file needs the extra switches
for Switches ("myglade.gresource.c") use Pkg_Config;
end Compiler;
end Config_Demo;
а потом
gprbuild -P config_demo -XPKG_CONFIG="`pkg-config -cflags gio-2.0`"
Лучше всего будет делать то, что делает GtkAda: посмотрите на его shared.gpr.in
файл, он использует токен @GTK_LIBS_GPR@
который будет заменен скриптом конфигурации, давая полезный shared.gpr
,
Дело в том, что вам нужно выполнить вызов pkg-config и как-то собрать свой файл gpr из результата. GPRBuild не может сделать это для вас и обработать результат. Если вы знакомы с автоинструментами GNU, вы можете посмотреть, как GtkAda достигает этого:
GTK_LIBS_GPR
устанавливается в aclocal.m4 с помощью макроса, который преобразует флаги в стиле C в массив GPR. Значение исходит от GTK_LIBS
который запрашивается здесь через pkg-config.
Если вас не устраивают автоинструменты GNU, вы можете написать свой скрипт configure, используя базовые командные оболочки, язык сценариев, такой как Python, или любой другой инструмент, который вам удобен.