Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82461
  • 博文数量: 14
  • 博客积分: 529
  • 博客等级: 一等列兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-18 13:56
文章分类

全部博文(14)

文章存档

2010年(14)

分类:

2010-11-19 22:14:00

下载

有为 Windows 准备的gtkmm安装程序。

现在最好请使用 2.16 版本,而不是2.18或者更新的版本,除非你确定需要那些新版本中的新功能。这是因为从 GTK+ 2.18 开始,它在 Windows 平台上出现了严重的错误。因为 GDK 中的 client-side-windows 的新加的代码的问题,一些应用程序被报告表现很不好。另外,XP Windows 主题也由于 client-side-windows 的代码而无法使用,因此被禁用了。所以在这些问题修复前,除非必要,建议仍使用 2.16 版本的 gtkmm。

安装程序的说明

gtkmm-win32-devel-*.exe 包含了gtkmm、libxml++、libglademm它所依赖的库的dll文件,还有头文件、导入库和文档。这些是在Windows上来编译你的使用gtkmm的应用或库所必需的。同样,你也需要 或者微软Visual C++ 来进行编译。

使用安装程序

使用运行时环境非常简单,只要运行安装程序,并且确保“在PATH环境变量中添加gtkmm运行时路径”被选中即可。这个选项将会帮助Windows定位到gtkmm的dll文件。如果你确定知道自己在做什么,也可以不选择这个选项。这可能在需要有多个gtkmm安装到系统中时比较有用。比如,同时有运行时库和开发库dll,而你希望通过手动的设置PATH环境变量来选择到底使用哪个gtkmm的库文件。安装之后,你应该可以运行使用gtkmm的程序了。

在执行安装程序时需要注意一个问题,如果你有意使用 MinGW(如使用类的非MSVC环境),那么安装路径是不可以包含空格的。比如,安装到 C:\Program Files\gtkmm 就是一个坏主意。这是因为MinGW编译时所需要使用的 pkg-config 包含了一个 bug。请看 。

要使用开发环境,你需要知道你打算使用哪一个编译器来编译你的代码。gtkmm 支持  和 Visual C++ 2005 (及以后的版本)。但是更早期的 Visual C++ 就不支持了,而且很可能也不会正常工作。

安装程序包里面包含了 GTK+ 运行时和相关依赖,还有 GTK+ 的头文件、导入库和文档。所以要使用gtkmm,你不需要再安装其它的东西了。

所有的 DLL 都安装到了安装目录的 bin 下面。额外的 DLL 安装到了 redist 下面。这些文件是当你要发布你的应用程序时所需要一同发布的文件。详细的信息请看后面的“再发布”部分。

MinGW DLLs

如果你使用  构建你的应用程序,那么你需要前缀为 lib 的 DLL 文件,如 libgtkmm-2.4-1.dll。

MinGW DLL 是使用 g++ 版本 3.4.5 构建的。无法保证其它版本的 g++ 可以同这些文件一同工作。特别是我们曾经发生过 由 g++ 3.4.2 构建的应用程序所抛出的异常,无法被 glibmm 或 gtkmm 捕捉到,而 g++ 3.4.2 恰好是 Dev-C++ 默认提供的。

安装程序安装的 DLL 文件包含了调试符号信息,这对于使用 gdb 调试你的应用程序非常有用。

MSVC++ DLLs

没有"lib"前缀的DLL文件,比如 gtkmm-vc80-d-2_4.dll 是给 MSVC++ 开发使用的 DLL。这些 DLL 的命名规则是

  • "模块"-"编译工具"-("d"-)"ABI 版本".dll
  • "模块" 是指DLL包含的库(如glibmm, cairomm或gtkmm)
  • "编译工具" 是指编译该DLL的编译器(也意味着运行时链接的对象)。
  • "ABI 版本" 是指库的 ABI 版本。注意,不是库版本,而是库的ABI(二进制应用程序接口)的版本。
  • "d" 在"编译工具"和"ABI 版本"之间,用以表明这是 Debug 版本。当使用 MSVC++ 编译 Debug 版本时,需要使用它们。而在 Release 编译时,需要使用那些没有"d"的DLL。

用MSVC++ 2005编译的MSVC++ DLL,即toolset=vc80的,它们链接到运行时MSVCR80.DLL / MSVCP80.DLL;而MSVC++ 2008,即toolset=vc90,的DLL是链接到MSVCR90.DLL / MSVCP90.DLL。

MSVC++ 发布的 DLL 对于运行时和开发来说都一样。

GTK+ DLLs

对于 GTK+ 及其依赖的库 (它们大多数都不是以 *mm 结尾,除了 libsigc-2.0.dll 和 xml++-"toolset"-2_6.dll),上述提及的命名规则并不适用。每一个库只有一个对应的 DLL,但是它对 和 MSVC++ (Debug 和 Release Target) 都可以工作,因为它们是 C 库,而不是 C++库。

使用 MinGW

要使用  构建你的应用程序,我们推荐你使用  shell。通过 MSYS,你可以像在 Unix 里面那样编译你的程序,比如,g++ foo.cc -o foo `pkg-config --cflags --libs gtkmm-2.4`。

你当然也可以使用普通的 Windows 命令行来编译,但是反斜杠的语法会无法工作,所以你需要单独的运行 pkg-config 然后手工的修改其内容。

安装程序仅提供原生的 Windows DLL 文件,而不提供 Cygwin DLL 文件。欢迎提供关于怎样使用 cygwin 来构建原生的 gtkmm Windows 应用程序的信息。

使用 MSVC++ (微软 Visual Studio)

下列只是粗略的介绍如何在 MSVC++ 中设置并且构建 gtkmm 应用程序。更相信的信息请见 页面。

要用MSVC++编译你的程序,通过菜单 "查看(View)->属性管理器(Property Manager)"打开"属性管理器",然后右键点击 Debug 目标,选择"添加现有属性页(Add existing property sheet)",然后定位到 gtkmm 的安装目录下的 MSVC 目录,选择与你的Visual Studio 版本相对应的 .vsprops 文件。MSVC++ 2005的用户应该使用 gtkmm-vc80-d-2_4.vsprops,而MSVC++ 2008的用户,应该使用 gtkmm-vc90-d-2_4.vsprops。然后对 Release 目标做同样的事情,不过需要注意的是,Release 版本对应的 .vsprops 是那些没有"-d"的文件,带"-d"的都是对应于Debug的。另外需要注意的是,不应该使用 gtkmm-2.4.vsprops 和 gtkmm-2.4d.vsprops,只是为了兼容性而把它们放在这里,这样在使用MSVC编译那些还是用它们的项目时,可以找到它们。

gtkmm/MSWindows/gtkmm-win32-msvc-propsheet.png

为了防止在 MSVC++ 2005 使用 Debug 版本时出现的随机崩溃,请到 "工程(Project) -> $MyProject 属性(properties)"中,确保"Debug"是激活的(在左上角),然后到"配置属性(Configuration Properties)=>C/C++=>代码生成 (Code generation)"中,选择"Multi-threaded Debug DLL"作为运行时库。这是因为你的程序需要使用与gtkmm(debug) DLL编译相同的库。

gtkmm/MSWindows/gtkmm-win32-msvc-codegen.png

你也许也希望将 "链接器(Linker)=>调试(Debuggin)"中的"生成Debug信息(Generate Debug Info)"设置为"是",这样可以调试你的程序。这在MSVC++ 2005中无论是新建的还是空的工程,这都不是Debug的默认设置。这一点在 MSVC++ 2008 中已经修复了。

gtkmm/MSWindows/gtkmm-win32-msvc-debuginfo.png

要想避免Visual Studio中的 ,需要给编译器传递一个 /vd2 的参数。如果你使用的是上面提到的属性页(property sheet),那么这个已经自动的帮你选上了。但是如果你不是在用属性页(Property sheet),那么你需要记住设置这个东西。

更新

当 gtkmm 的新版本发布时,你只需要执行新的 gtkmm 安装程序来更新你的 gtkmm 安装。安装程序会自动检测之前的 gtkmm 版本,并且先将其卸载。

安装程序的副作用

安装程序除了将文件和目录复制到硬盘上之外,还做了如下的事情:

  • 设置了 GTKMM_BASEPATH 环境变量。这用来帮助 MSVC 属性页(property sheets)定位 gtkmm 的头文件和库文件。

  • 将 gtkmm DLL 文件的路径添加到 PATH 环境变量。这是帮助使用 gtkmm 的程序定位所需的 gtkmm DLL文件并且使之可以运行。

  • 在注册表中添加HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\gtkmm键和一些子键。这是为了让“添加/删除程序”窗口中可以出现 gtkmm 的相关项。

  • 在注册表中添加 HKEY_LOCAL_MACHINE\Software\gtkmm 键。这样卸载程序可以找到 gtkmm 安装到什么位置了。

  • 在注册表中添加 HKEY_CURRENT_USER\Software\gtkmm 键。这个可以令 gtkmm 安装程序可以知道更新的时候应该使用哪种语言。

对于用户本地安装来说,注册表的键是存放于 HKEY_CURRENT_USER 而不是 HKEY_LOCAL_MACHINE。

静默安装

可以使用下列选项进行静默安装 (不需要用户干预的安装,使用 /S 标志):

  • /D=GTKMM_PATH: 在 GTKMM_PATH 中设置安装路径.

  • /SET_ENVVARS: 如果设置该标记,gtkmm DLL 文件的路径将会被添加到 PATH 环境变量。
  • /ALLUSERS: 安装给所有用户而不是当前用户。

下面要提到的主要是关于完整性。当你发布你的程序的时候,我们建议随着你的应用程序一起发布所需的 gtkmm 文件,而不是去运行 gtkmm 安装程序,因为这样更不容易出错,而且对最终用户也更方便。下面一节会讲述随你的应用再发布 gtkmm 所需要的文件。

再发布

对于在没有安装过 GTK+ 或 gtkmm 的计算机上要在安装你的程序后可以立即运行,你需要随着你的应用程序安装下列文件,可以使用安装程序来安装。我们建议你保持安装好的文件结构,这样 GTK+ 可以正确的找到它所需要的配置文件和相应的模块。

这意味着你将会在软件包顶级目录有 bin/、etc/、lib/ 和 share/ 文件夹。因为所有的 DLL 都在 bin/ 中,所以这也是你的应用程序可执行文件应该在的位置。所以,在目标的机器上,根据所安装的目录,也许最终会是 C:\Program Files\YourApplication\bin\YourApplication.exe。大多数 Windows 上的 GTK+ 程序都是这么做的,比如 GIMP。

当再发布你的应用程序的时候,请使用 redist/ 目录下的 DLL 文件,而不要使用 bin/ 目录下的文件。因为这些 redist/ 目录下的文件已经去除了调试符号信息,这样文件的大小会更小。同样,编译这些文件的时候使用了 "-O2" 选项,这意味着已经针对速度进行了优化。而在 bin/ 目录下的文件则使用 "-O0 -g" 选项编译,因此是为调试准备的。调试那些已被优化的代码经常让 gdb 产生混乱。当你使用 MSVC++ 而不是 MinGW 时,MSVC++ 的 gtkmm 的 DLL 文件是在 bin/ 目录下,而不是 redist/ 目录下。这是因为在 IDE 中运行调试或发布版本都是很常见的,所以所有的 DLL 文件需要在 PATH 中。

请不要把 DLL 文件安装到全局的系统路径中,比如 C:\Windows\System32。因为 GTK+ 需要在运行时根据 GTK+ DLL 文件所在位置定位所需的文件,你也许会需要安装其它文件,比如模块 (图像加载器、输入模块等) 或主题设置到同样的路径。而且,如果两个不同的应用程序同时这么做,那么卸载其中一个程序时必须确保文件依旧在 System32中,否则另一个程序将无法运行。况且,历史已经证明新版本的 Glib 或 GTK+ 的 DLL 库文件并不总是和以前的文件相兼容,即使它们试图保持兼容。当然,这个问题正在改进。

gtkmm

为了 gtkmm 你需要所有这些文件:

  • bin\libgtkmm-2.4-1.dllbin\gtkmm-vc80-2_4.dll or bin\gtkmm-vc90-2_4.dll (决定于你是使用 MinGW、MSVC++ 2005 还是 MSVC++ 2008 构建你的应用程序)

  • bin\libgdkmm-2.4-1.dllbin\gdkmm-vc80-2_4.dll or bin\gdkmm-vc90-2_4.dll

  • bin\libpangomm-1.4-1.dllbin\pangomm-vc80-1_4.dll or bin\pangomm-vc90-1_4.dll

  • bin\libatkmm-1.6-1.dllbin\atkmm-vc80-1_6.dll or bin\atkmm-vc90-1_6.dll

  • bin\libcairomm-1.0-1.dllbin\cairomm-vc80-1_0.dll or bin\cairomm-vc90-1_0.dll

  • bin\libgiomm-2.4-1.dllbin\giomm-vc80-2_4.dll or bin\giomm-vc90-2_4.dll

  • bin\libglibmm-2.4-1.dllbin\glibmm-vc80-2_4.dll or bin\glibmm-vc90-2_4.dll

  • bin\libsigc-2.0-0.dllbin\sigc-vc80-2_0.dll or bin\sigc-vc90-2_0.dll

GTK+ 运行时文件

这是 gtkmm 所必需的,所以你也需要所有这些文件。更详细的关于这些库提供了什么功能的介绍在  页面。

  • bin\libgtk-win32-2.0-0.dll

  • bin\libgdk-win32-2.0-0.dll

  • bin\libgdk_pixbuf-2.0-0.dll

  • bin\libpango-1.0-0.dll

  • bin\libpangocairo-1.0-0.dll

  • bin\libpangoft2-1.0-0.dll

  • bin\libpangowin32-1.0-0.dll

  • bin\libatk-1.0-0.dll

  • bin\libcairo-2.dll

  • bin\libgio-2.0-0.dll

  • bin\libgmodule-2.0-0.dll

  • bin\libgobject-2.0-0.dll

  • bin\libgthread-2.0-0.dll

  • bin\libglib-2.0-0.dll

  • bin\libpng12.dll

  • bin\intl.dll

  • bin\libtiff3.dll

  • bin\jpeg62.dll

  • bin\zlib1.dll

  • etc\pango\pango.modules:所注册的 pango 模块的列表。

  • etc\gtk-2.0\gdk-pixbuf.loaders:可用的图像加载器的列表。

  • etc\gtk-2.0\gtk.immodules:可用的 GTK+ 输入模块列表。

  • etc\gtkrc:包含了要使用的 GTK+ 的主题 ("MS-Windows" 主题)。

  • lib\gtk-2.0\2.10.0\* (所有这个目录下的文件和目录):这些是在运行时加载的 GTK+ 模块,如图像加载器和主题引擎。

  • share\themes\MS-Windows\gtk-2.0\gtkrc:MS-Windows GTK+ 主题的设置。

  • share\locale\*:Glib 和 GTK+ 的多种语言的翻译。

libxml++

如果你的程序使用 libxml++,那么你额外需要:

  • bin\libxml++-2.6-1.dllbin\xml++-vc80-2_6.dll or bin\xml++-vc90-2_6.dll

  • bin\libxml2.dll

  • bin\iconv.dll:libxml2.dll 所必需的。

libglademm

如果你的程序使用了 libglademm,那么你会额外需要:

  • bin\libglademm-2.4-1.dllbin\glademm-vc80-2_4.dll or bin\glademm-vc90-2_4.dll

  • bin\libglade-2.0-0.dll

改造

要改造gtkmm的二进制文件或者重新创建安装程序,请看 。

阅读(3209) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~