1

使用 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命令,但没有成功。当然,我设法手工构建,但这有点长:)

4

2 回答 2

5

这可能对您有用:

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`"
于 2019-02-27T22:44:31.923 回答
3

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

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

GTK_LIBS_GPR使用将 C 样式标志转换为 GPR 数组的宏在aclocal.m4中设置。该值来自此处通过 pkg-configGTK_LIBS查询。

如果您对 GNU 自动工具不满意,您可以使用基本的 shell commandos、Python 之类的脚本语言或任何其他您喜欢的工具来编写配置脚本。

于 2019-02-27T22:17:32.953 回答