【问题标题】:Shell command to compile C in Gprbuild在 Gprbuild 中编译 C 的 Shell 命令
【发布时间】:2019-07-21 17:02:06
【问题描述】:

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

【问题讨论】:

    标签: c ada gprbuild


    【解决方案1】:

    这可能对你有用:

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

    【讨论】:

    • 我想知道您是否可以为 GPR 配置数据库提供一个特殊的补充,它会使用运行外部命令的<external> 功能;但它只在<compiler_description> 元素中是合法的,为此引入一个新的“编译器”似乎......错误。此外,不确定如何将结果作为列表获取 - 它用于查询编译器,例如-dumpmachine.
    • 您的第一个解决方案正在运行!...我同意您的观点,为此在 GPR 配置数据库中提供特殊的编译器描述在我看来是完全错误的,因为这不是它的主要目的。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 我希望有另一种方式:)
    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 2018-04-21
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多