使用带有C ++应用程序的非本地数据/媒体文件(gtkmm)

时间:2012-04-28 21:38:52

标签: c++ autotools automake gtkmm

我开始使用gtkmm(用于GTK + GUI工具包的C ++绑定)开发用C ++编写的声谱分析工具(受spek启发)。我想我现在应该知道如何做到这一点,但是......

我的目录结构是a-la-GNOME,例如src/data/po/man/。需要我查询的具体情况是使用位于data/ui的GTK UI管理器。对于这种特定情况,我希望能够以独立于安装的方式从该文件加载用户界面(例如,加载文件不依赖于make install;可执行文件可以运行[并加载]在运行src/ [因此将源代码编译为selfsame exectuable]或其安装前缀之后,来自make的UI文件。我如何在源代码中引用UI文件(请记住,不是通过创建文件对象(fopen(...))来执行文件加载,而是将文件位置作为字符串参数传递给{ {1}})?

除了UI文件的这种特殊情况之外,我如何使用autotools构建过程对文件(即数据库,INI文件,XML模式)进行类似的引用?是否有一段相关的Automake代码可以快速设置项目以使用这种类型的目录结构?

2 个答案:

答案 0 :(得分:1)

只需尝试使用这两个文件(未安装优先级):

if(!(UIManager).add_ui_from_file(../data/ui/mygui))
   (UIManager).add_ui_from_file(/incalled/location/mygui)

答案 1 :(得分:0)

在Glom中,我创建了一个辅助函数,它尝试这两个位置,两个位置都在Makefile.am中定义(如果你只有一个Makefile.am,通过使用非递归的automake,这会更简单,无论如何都更简单): http://git.gnome.org/browse/glom/tree/glom/glade_utils.h#n38