使用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 命令,但没有成功。当然,我设法手工建造,但这有点长:)
答案 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之类的脚本语言或任何您喜欢的其他工具来编写配置脚本。