gtkmm文章:libglade转换至gtkbuilder
星期二, 八月 11th, 2009glade3界面生成器现在能生成两种格式的xml界面描述文件。分别是libglade和gtkbuilder. libglade就是我们以前所使用的,要依赖于libglade库的。而gtkbuilder是gtk 2.12以后版本直接支持的。gtkbuilder是设计来代替libglade的,将会是以后的主流。因此本文将简单介绍一下在gtkmm环境下libglade转换至gtkbuilder的操作。 1.转换旧的glade文件。 如果您的项目中已经用了libglade的文件格式,可通过两种方法将它转换成gtkbuilder格式的。 一是用glade-3打开,在菜单“属性”中将它选择成gtkbuilder,并另存为即可。 二是使用 gtk-builder-convert xxx.glade xxx.xml 命令直接转换。 当然gtkbuilder的后缀名仍可保留为glade,这随你喜欢。 2. 替换代码中的相应函数。 在创建xml文件中: Glib::RefPtr<Gnome::Glade::Xml> main_xml = Gnome::Glade::create(main_ui,"main_notebook"); 替换成 Glib::RefPtr<Gtk::Builder> main_xml = Gtk::Builder::create_from_file(main_ui, "main_notebook"); 在获取widget中 Gtk::Button* button_ok = dynamic_cast<Gtk::Button*>(main_xml->get_widget("button_ok")); 替换成 Gtk::Button* button_ok=0; main_xml->get_widget("button_ok",button_ok); 转换后,程序可以去除掉libglademm和libglade依赖,但至少要求gtk和gtkmm版本要2.14以上版本才能正常工作。另外libglade里画的菜单和工具栏似乎不能正常转到gtkbuilder中,这点需要注意。
Arch下编译talkmm
星期日, 五月 31st, 2009Arch下talkmm编译指南 1.编译前准备的包 语音支持方面的包 yaourt -S speex ilbc linphone 界面支持方面的包 yaourt -S gtkmm libsexymm 2.下载源码包 wget http://talkmm.googlecode.com/files/libjingle-0.4.1.tar.bz2 wget http://talkmm.googlecode.com/files/talkmm-0.10.tar.bz2 3. 解压libjingle tar xvfj libjingle-0.4.1.tar.bz2 cd libjingle-0.4.1 ./configure make cd .. 4. 解压talkmm tar xvfj talkmm-0.10.tar.bz2 cd talkmm-0.10 5. 连接libjingle目录 ln -s ../libjingle-0.4.1/talk src/talk 注意这是在talkmm-0.10目录里做的,并且libjingle-0.4.1目录就在talkmm-0.10同级目录中。 这是为了talkmm里的源码能连接到libjingle里生成的静态库. 6.编译talkmm ./autogen.sh ./configure make sudo make install PS. Arch中gcc 4.4.0-3 版本在编译时似乎有个bug。目前只能跳过这个gcc的版本来编译. [...]
再次配置gtkmm交叉编译环境
星期日, 三月 29th, 2009Gtkmm有跨平台的特性。我决定发扬此特性,那先从port gtkmm到win 平台开始吧。那第一步就是配置gtkmm的win编译环境。网上大多文章都 介绍了在win下配置gtkmm的环境。而我之前也写过一篇介绍在linux下通 过mingw32来编译gtkmm程序的文章。 Gtkmm系列:交叉编译Window版本的Gtkmm程序示例 是的,我觉得这样才有意思,交叉编译嘛。 但是那一篇是参考别人的译作,方法有些繁琐,重要的是,已经不太适合 当前的环境了。主要是那个文章只支持到gtk28版本,目前的gtkmm已经 到2.16了。mingw32也是4.3的版本,众所周知,4.3版本的gcc语法严谨 多了。 经过昨天一晚上及今早的奋斗,和yetist双线合作,一人一种方法找环境配 置方法。目前完成了第一阶段的成功。 事实上,arch社区里是有gtk2的mingw32包,也就是说gtk+的交叉编译 环境是有人做好的了。只需要用yaourt就能安装配置完成。但gtkmm却 没有,yetist就循着这条线索,准备编译gtkmm的win32包。 而我在看了那些在win下配置gtkmm环境的文章后,想到,其实也只是下 载需要的库而已啊,而那些库,是组成gtkmm的基础,既然我现在是要编 译pe格式的程序,最终调用的不也是那些库嘛,那把win下的gtkmm开发 包转到linux下来给mingw32调用不就成了。于是照做,编译成功了又一个 gtkmm demo程序。 废话了这么多,那就正式开始交叉编译gtkmm之路吧。 很简单: 1.先下载gtkmm开发包 当然是for win的。http://ftp.acc.umu.se/pub/GNOME/binaries/win32/gtkmm/2.16/gtkmm-win32-devel-2.16.0-2.exe 2.16的开发包好啊,gtk+啥的都包含了。 但需要在win下安装解压出来,虽然是42M的大小,解出来有380M大。 安装完后从win分区里安装的gtkmm目录完整复制到linux分区中。我这里 放在/src/mingw32-gtkmm,你可以随便定义这个目录。只记住需要做个 链接即可, sudo ln -s /src/mingw32-gtkmm /target 2.修正prefix路径 这是for win的开发包,所以还是需要修改一些东西的,主要是pkgconfig 的路径问题。 执行下面两个命令即可修正: find /target/lib/pkgconfig -name "*.pc" |xargs sed -i ‘s#prefix=c:\/devel\/target.*#prefix=\/target#’ find /target/lib/pkgconfig -name "*.pc" |xargs [...]
« Previous Entries

