Shell 在 Gprbuild 中编译 C 的命令

Shell command to compile C in Gprbuild

使用 GtkAda,我正在尝试使用资源 API 将 Glade 文件直接包含在我的代码中。

为此,我们可以使用 glib-compile-resources 从一组资源生成 C 代码,然后可以将其链接到 Ada 代码。

问题是这个C代码需要Gtk包含,我们通常从Linux下的pkg-config命令得到,例如

gcc -c -x c `pkg-config --cflags gio-2.0` myglade.gresource.c

我想知道如何在 GPRBuild 项目文件中提供相同类型的信息。

仅供参考,我已经尝试在 C 语言的编译器包中使用 pkg-config 命令,但没有成功。当然,我设法手工构建,但这有点长:)

你最好的选择是做 GtkAda 所做的事情:查看它的 shared.gpr.in 文件,它使用令牌 @GTK_LIBS_GPR@,它将被配置脚本替换,给出一个可用的 shared.gpr.

问题是,您需要发出 pkg-config 调用并根据结果以某种方式 构建您的 gpr 文件。 GPRBuild 不具备为您执行此操作和处理结果的能力。如果您对 GNU autotools 感到满意,您可以进一步了解 GtkAda 是如何实现它的:

GTK_LIBS_GPR 通过 pkg-config 在 aclocal.m4 using a macro that converts the C-style flags to a GPR array. The value comes from GTK_LIBS which is queried here 中设置。

如果您不习惯使用 GNU 自动工具,您可以使用基本的 shell 突击队、Python 之类的脚本语言或任何您熟悉的其他工具来编写您的配置脚本。

这可能适合你:

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`"