Shell命令在Gprbuild中编译C

时间:2019-02-27 21:09:43

标签: c ada gprbuild

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

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

问题在于此C代码需要Gtk包含,我们通常从Linux下的 pkg-config 命令(例如

)获得
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Spire.Presentation
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (string s in GetAllTextInSlide(@"C:\input.pptx", 0))
                Console.WriteLine(s);
            Console.ReadLine();
        }
        // Get all the text in a slide.
        public static List<string> GetAllTextInSlide(string presentationFile, int slideIndex)
        {
            // Create a new linked list of strings.
            List<string> texts = new List<string>();

            //Initialize an instances of Presentation class and load the sample PowerPoint file
            using (Presentation presentation = new Presentation(presentationFile, FileFormat.Pptx2010))
            {

                //get the slide
                ISlide slide = presentation.Slides[slideIndex];

                //Iterate through shapes to find the text
                foreach (Shape shp in slide.Shapes)
                {
                    //get the text of each placeholder
                    texts.Add(shp.ToString());
                }

            }
            Console.WriteLine(texts.ToString());
            Console.ReadKey();
            // return an array of strings.
            return texts;

        }
    }
}

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

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

2 个答案:

答案 0 :(得分: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`"

答案 1 :(得分:3)

您最好的选择是做GtkAda的工作:查看其shared.gpr.in文件,它使用令牌@GTK_LIBS_GPR@,它将被配置脚本替换,从而提供可用的shared.gpr

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

aclocal.m4中使用宏将

GTK_LIBS_GPR设置为一个宏,该宏将C样式的标志转换为GPR数组。该值来自GTK_LIBS,可通过pkg-config查询here

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