日志
在Windows环境下利用Netbeans+MinGW搭建gtk、gtkmm开发环境
2012-06-14 00:24
以下内容,完全摘自以下两个网页:
http://t.data321.cn/article-36724-1.html http://apps.hi.baidu.com/share/detail/20704542 筹办情况 1)Java(JDK) 下载地点: 文件下载 然后安装。 2)NetBeans7.1 下载地点: 文件下载 这是最新版7.1,挑选C/C++版本的下载便可以。 3)MinGW 在MinGW办公室网页的左边,挑选“DownLoads”进入下载页面。 进入sourceforge后,点击“Installer”。 挑选“mingw-get-inst”,停止下载。 挑选最新的一个。这个是经由过程收集在线下载并安装的。 4)GTk 挑选windows的32位下载 挑选All in one bundle 下载调集绑定包。 停止下载。 2.起头设置设置装备摆设 1)安装并设置装备摆设MinGW 这里挑选“Dowload”的一项,停止在线下载安装。 挑选安装途径。 挑选安装项目,此处倡议全数安装。全勾 起头下载 下载并安装 2)安装JAVA(JDK) 一起下一步,没啥好说的。 3)安装与设置装备摆设NetBeans 安装进程就不再说了,一起下一步,便可以。 上面说一下设置装备摆设。 在“天生东西”选项卡的右边,增加一个东西调集。现实这里是增加MinGW的途径。 点击“阅读”按钮。 挑选MinGW目次下的bin文件夹。 然后,肯定。 此中Make号令需求零丁增加的。 普通在这个位置MinGW\msys\1.0\bin\make.exe 同时还要确保将D:\MinGW\msys\1.0\bin 这个途径增加到windows的情况变量中去。 然后设置装备摆设“代码帮助” 这里增加Gtk目次下的Include文件夹上面一切第一层的文件夹。 另有Gtk目次下的Lib文件夹下gtk-2.0和glib-2.0目次下的Include目次。 若是你还用Gtkmm的话,倡议再在C++编译器中也按如上增加。 然后肯定。 这里能够检测一下,MinGW设置装备摆设的是不是准确,能够新建一个空文件,打印输出一个HelloWorld,若是能够一般打印,申明MinGW安装设置装备摆设的没有题目。 上面是最主要的一项,把一些参数增加到项目中去。NetBeans在编译项目时,不会出错。 新建一个项目 项目属性----天生-----C编译器------编译行-----其他选项----增加: `pkg-config --cflags gtk+-2.0` 项目属性----天生-----链接器-----库----库中增加 `pkg-config --libs gtk+-2.0` 在Main.c文件中插手以下代码: 1 #include <gtk/gtk.h> 2 3 int main(int argc, char* argv) { 4 GtkWidget *window; 5 gtk_init(&argc, &argv); 6 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 7 gtk_widget_show(window); 8 gtk_main(); 9 return FALSE; 10 } 若是能够一般编译经由过程,则会上面的相干的提醒。 "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .clean-conf make: Entering directory `/d/Lesson/CppApplication_1' rm -f -r build/Debug rm -f dist/Debug/MinGW-Windows/cppapplication_1.exe make: Leaving directory `/d/Lesson/CppApplication_1' 清算 胜利 (总计时候: 652毫秒) "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make: Entering directory `/d/Lesson/CppApplication_1' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/cppapplication_1.exe make: Entering directory `/d/Lesson/CppApplication_1' mkdir -p build/Debug/MinGW-Windows rm -f build/Debug/MinGW-Windows/main.o.d gcc.exe `pkg-config --cflags gtk+-2.0` -c -g `pkg-config --cflags gtk+-2.0` -MMD -MP -MF build/Debug/MinGW-Windows/main.o.d -o build/Debug/MinGW-Windows/main.o main.c mkdir -p dist/Debug/MinGW-Windows gcc.exe `pkg-config --cflags gtk+-2.0` -o dist/Debug/MinGW-Windows/cppapplication_1 build/Debug/MinGW-Windows/main.o `pkg-config --libs gtk+-2.0` make: Leaving directory `/d/Lesson/CppApplication_1' make: Leaving directory `/d/Lesson/CppApplication_1' 天生 胜利 (总计时候: 1s) ====================================================================================================================================================================================================== ====================================================================================================================================================================================================== 前面已经介绍了如何在Windows下利用Netbeans搭建C/C++开发环境,不知道的童鞋可以瞅这里。话说Netbeans的CDT真是太好用了,完全一个免费版的Visual Studio,用来开发C/C++是太方便了,而且还可以跨平台。那么在Windows下开发gtk、gtkmm是否也可以用Netbeans来作为集成开发环境呢?答案是肯定的。事实上,gtk、gtkmm在Windows下的表现也是非常好的,只不过由于配套工具都很零散,不像Qt那样事先给预备好,所以自己动手整合比较麻烦一点,不过只要亲手试一次就知道其实也还是比较容易配置的。 gtk是用C语言开发的跨平台界面库,虽然是用C语言开发的,但一样采用了面向对象的程序设计,用C来实现面向对象是很巧妙的,不过不得不说,因为C本身不支持面向对象,所以硬要用C来实现面向对象,就需要用一些宏、特殊结构等等方式来迂回实现,随着用户界面的日趋复杂,交互功能的增多,C就比较被动了,这个时候真正面向对象的程序设计语言就会在规模上、效率上、代码稳定度上体现出优势。gtkmm就是用C++封装了gtk而形成的一套界面库,和Qt类似,但是比Qt有特色,是因为gtkmm完全采用符合标准的C++自身特性来实现图形用户界面的信号(消息)响应机制,而Qt则因为出现年代较旧,采用的非标准的方式来实现信号、槽机制的。从gtk 2.14版本开始,gtk已经内置了GtkBuilder,取代原有的libglade实现界面和逻辑代码的分离,可以方便的载入界面描述文件(XML),不再依赖libglade。作为gtk最新的可视化界面设计工具Glade3,已经完全支持GtkBuilder了。所以我们现在就开始在Windows环境下的Netbeans中配置gtk、gtkmm的开发环境。 首先配置好Windows+Netbeans+MinGW(MSYS)。 下载Win32版本的gtk、gtkmm开发包(一般都给打包好了,含有二进制动态库、静态库、包含文件、文档等)并安装好,最好不要安装到Program Files这样的目录,直接安装到根目录下是最好的,避免空格等造成问题。根据gtkmm的建议,因为最新的gtk 2.18在Windows环境下好像会出现一些问题,所以稳妥起见还是用2.16的gtk以及gtkmm最好了。将gtk、gtkmm的bin目录分别加入到系统环境变量PATH中。 注意,安装glade3 for win32的版本已经内含了gtk完整开发包,就不需要再单独安装gtk开发包了。 在Netbeans中,通过“工具->选项”菜单对“C/C++”模块进行配置,关键是要配置好C/C++的包含目录,这样在编辑代码时,Netbeans才会去分析相应的头文件并给出正确的代码提示及分析,如下图所示: 这里要特别注意,图上红圈所表示的内容——针对gtk只需要配置C编译器的包含文件(头文件)目录,把gtk的include、include下的各一级子目录分别加入即可(一级子目录下的就不要加了),同时还要记住把gtk的lib下的各一级子目录内的include目录加入进来,切不可忘记!对gtkmm需要同时配置好C编译器及C++编译器的包含文件(头文件)目录,C编译器的包含文件(头文件)目录配置和刚刚说的gtk配置一样,C++编译器的包含文件(头文件)目录配置需要把gtk以及gtkmm的include、include下的gtk、gtkmm的各一级子目录分别加入,同时还要把gtk、gtkmm的lib下的各一级子目录内的include目录也加入进来,注意C++编译器的包含文件目录不仅要有gtkmm相关的include,还要有gtk相关的include。 创建一个C/C++项目,注意,这里要设置项目属性,如果是gtk程序,就设置“项目属性->C编译器->命令行->其他选项”,加入`pkg-config --cflags gtk+-2.0`;如果是gtkmm程序,就设置“项目属性->C++编译器->命令行->其他选项”,加入`pkg-config --cflags gtkmm-2.4`,如下图所示: 然后设置“项目属性->链接器->库”,进入库的详细设置,“添加选项->其他选项”,填入`pkg-config --libs gtkmm-2.4`,确定即可(如果是开发gtk程序,则填入`pkg-config --libs gtk+-2.0`),如下图所示: 这样的配置是非常必要的,否则尽管通过Netbeans的工具菜单去配置全局的CDT模块包含文件目录可以使Netbeans的代码编辑器正确找到并分析头文件,但MinGW编译器、链接器无法正确找到头文件及库文件,因此必须通过上述项目属性方式进行设置,就可以正常编译了。 最后还要说一句,这样编译出来的gtkmm程序在Windows环境下运行的时候会自动额外弹出一个命令行窗口,一般是gtk程序用于输出调试信息用的,默认就是这样,要想不显示这个命令行窗口,需要在给MinGW链接器(还是gcc或者g++)设置一个参数:-mwindows,这样就会告诉链接器最终生成一个符合Windows要求的窗口应用程序而不会弹出命令行窗口,如果不指定这个参数就会默认生成弹出命令行窗口的版本,关于-m参数,可以用gcc --target-help或者g++ --target-help来查看具体说明,其实就是制定目标平台啦。 |