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