在 Microsoft Visual Studio 2010 中使用 gtkmm
1. 入门
2. 改正 main() 函数
3. 改正 stdafx.h
5. 为 gtkmm 添加 MSVC 属性(Property)文件
6. 修改几个项目配置
安装 gtkmm
安装Visual Studio,并且已配置好开发本机 Win32 应用程序的环境,您还必须安装 gtkmm 开发包。为此,请下载并安装最新的 gtkmm开发包从Gnome FTP site。不用担心开发软件包的大小,因为它们要远远大于运行的包的大小(运行的包的大小将取决于您的最终用户)。
创建带 gtkmm 支持的项目
入门
首先,在 Visual Studio 中在文件菜单中选择的新建/项目,创建新项目,如下图所示。
在新建项目窗口中,请(确保)选择 Win32 控制台应用程序,如下图所示。此外,指定您的项目的名称和位置。本示例的项目的名称是 gtkmm_test 位置是 C:/work。
单击完成将为您创建一个新的Win32 控制台项目。现在,使用 gtkmm我们需要修改此项目的实现。
修改 main() 函数
这个新项目的第一工作是修改 main () 函数。Visual Studio要通过_tmain()使用自已的一些功能。这是好办法,但却没了可移植性,而 gtkmm 实现的目标之一就是为应用程序提供一个可移植的框架。如此说来,按习惯删除 _tmain(),并将其替换为 (老式)main。
修改 stdafx.h
其次要改变是 stdafx.h 预编译的头文件。在写这篇文章时, Windows 程序员大多已熟悉预编译头的概念。然而,许多 Unix 程序员不熟悉,GCC到了 3.4 版才加入预编译头支持,而且大多数开放源码项目中仍未使用。Unix 程序员可能会试图完全禁用预编译的头,但禁用之前请仔细考虑。正确使用预编译头可为 gtkmm 的使用提供了更好的编译性能,让您在项目过程中节省几个小时。
下图演示如何更改默认 stdafx.h和包含 gtkmm.h 头文件以提高可移植性。可移植性变化包括删除#pragma once行,将它替换为标准 # ifdef包含文件保护,删除 tchar.h 头文件。最好把你 gtkmm 实现的所有相关头文件 (例如: libglademm.h,libxml++,等等)都放在此文件中,相对于放在其他的文件,将大大加快您的项目的编译。
添加代码创建一个简单的 gtkmm 窗口
接下来,将一些简单的 gtkmm程序行添加到 main () 函数。在下图中所示的例子来自于gtkmm 教程(第 3 章基础知识)。
为 gtkmm 添加 MSVC 属性(Property)文件
下一步是添加随gtkmm 一起发布的 MSVC 属性文件。自 2005版以后,Visual Studio 支持使用属性文件为项目添加设置。属性文件可以包含的所有类的构建设置 (例如: 定义,包括路径、 链接路径和库) 并使其易于生成针对第三方软件包。当属性文件添加到项目中时,项目将继承的属性文件指定的所有构建设置。使您的项目可以移动 (相对路径比绝对路径要便于移动),您可从 gtkmm 发布 (通常为 C:/Gtk/MSVC/) 的属性文件复制到包含您的项目 (我们的例子是 C:/work/gtkmm_test/) 的目录里。
接下来,将属性文件添加到项目中。如下图,您通过单击解决方案资源管理器中的属性管理器选项卡,可以执行此操作:
鼠标右键单击 Debug | Win32 的文件夹,选择添加现有的属性表。从文件浏览器中,选择文件 gtkmm-vc100-d-2_4.props。接下来,用鼠标右键单击Release |Win32 的文件夹,再选择添加现有的属性表。从文件浏览器,这次选择文件 gtkmm-vc100-2_4.props。如果您使用 MSVC + + 2008择选名字中带vc90的, MSVC + + 2005择选名字中带vc80的使用。
完成后,属性管理器应该如下图中所示:
修改几个项目配置
此时我们即将完成。最后要在项目属性页中更改几个设置。最简单方法是在解决方案资源管理器中右击的项目名称,然后单击属性菜单项,如下所示:
(vc2008以前,我在vc2010好像不用这步设置)要做的第一件事是将 $(NoInherit) 选项从链接器设置中删除,如下图所示。在左侧的树中链接器项。打开配置属性,选择链接器,然后单击输入。现在从附加依赖项行中删除 $(NoInherit) 标记。请务必在Debug和Release 两种模式中这样做。
此时,您的应用程序可以生成并运行。但是,gtkmm 实现头会导致生成期间无关紧要的警告。幸运的是,从相同的项目设置对话框中,可以禁用此警告。在对话框的左边的树中,打开配置属性,然后 C/C++,然后单击高级。现在禁用特定的警告字段中键入 4250;4819
,如下面的图所示。请确保Release 和Debug中进行此更改。按确定完成。
关于 Windows 控制台
如果您现在生成并运行您的应用程序,您将看到一个什么也不做的简单 Gtk + 窗口。同时您的应用程序也会弹出一个控制台窗口。控制台窗口对于调试 gtkmm 实现的应用程序是很有价值的,因为许多 Gtk + 警告输出到此控制台(不同的 Windows 程序员所熟悉的 OutputDebugString() 或 trace () 函数)。
当你发布您的应用程序时,您可能希望它不弹出控制台。这就需要在链接器设置做两个小更改。从属性页的左边的树中,打开配置属性,选链接器/系统。现在如图将子系统字段的值改为SUBSYSTEM:WINDOWS。当您的应用程序启动时,将禁止创建控制台窗口。还要更改您的应用程序的入口点。选择高级从左侧的树中,然后将入口点字段更改为 mainCRTStartup (请确保使用正确的大小写)如下第二个图所示。
一些用户已发现在活动Debug模式和非活动Release模式方便地摆脱控制台。有人想要在两种模式中同样设置。这完全由开发人员决定。按确定完成。
就这些了。此初始设置后, gtkmm 应用程序可以编辑、构造,并就像任何其他 Visual Studio 项目运行。