Code::Blocks配置GTK+2GTK+3

作者

He YiJun – storysnail<at>gmail.com

团队

ls

版权

转载请保留本声明!

本文档包含的原创代码根据General Public License,v3 发布
GPLv3 许可证的副本可以在这里获得:http://www.gnu.org/licenses/gpl.html

本文档根据GNU
Free Documentation License 1.3发布
GFDL1.3许可证的副本可以在这里获得:http://www.gnu.org/licenses/gfdl.html

文中所引用的软件版权详见各软件版权具体声明,文中所提及的所有商标均为各自商标所有人的财产。
作者在此向所有提供过帮助和支持的朋友表示感谢,此致!

更新

2014-11-10

修改版权和一些笔误。

2014-02-08

增加了GTK3的部分。

略...

...

这篇文章的第一版还是3年前写的,虽然一直断断续续的维护更新,但gtk2毕竟已经过时,想来会和gtk1.2一样渐渐成为人们记忆长河中的一粒沙吧。gtk3是在2011年2月10日发布的,
目前已经更新到3.8版,这一年我基本将精力放在了嵌入式设备方面,并没有太多时间玩gtk,
更别说更新这篇文章了!前些时日G3908(G3908是一个GSM/GPS设备的代号)设备完成,我需要为其在PC上写一个控制界面,自然的我想到GTK,而如何配置Code::Blocks开发gtk3程序也就成为必须跨过的一道小土坎。


安装codeblock10.05和GTK+开发包

1:到http://www.codeblocks.org下载最新版的codeblock,我一般会选择带MinGW编译器的版本,文件名是codeblocks-12.11mingw-setup.exe,下载完成后运行安装文件,一步步安装到结束。

2:下载安装GTK+开发包

For
GTK+2:

到http://www.gtk.org/下载GTK+开发包,注意是下载all-in-one
bundle,但不要下载2.24.10这个版本因为该版本的开发包有严重Bug,并不能正常使用,建议下载gtk+-bundle_2.16.6-20100912_win32.zip。

For
GTK+3:

gtk官方到目前为止还没有提供GTK+3的开发包和运行时,不过网上的很多大牛都自己编译了GTK+3的开发包, 你可以用google搜索!这里我推荐http://www.tarnyko.net/提供的GTK+3,主页默认是法语,但有英语页面!

进入http://www.tarnyko.net/dl/下载页面后选择下载gtk+-bundle_3.6.4-20130513_win32.zip下载完成后将其解压,解压后得到的文件放到了C:\gtk+目录下,注意这个gtk+目录是需要自己建的.

二 设置环境变量

我使用的是win7
64位系统,设置方法如下:

点击开始菜单,之后右键单击
“计算机”–>“属性”在侧边栏选择“高级系统设置”->在弹出的窗口选择"高级"标签页"–>“环境变量” (我是建立在"用户变量"里,当然你也可以建立在“系统变量”里),

按新建,依次添加,注意如果变量名已经存在,例如PATH,那就按编辑按钮,然后在原有的变量值后面加入新的变量值,每个变量值之间用分号隔开。

变量名

变量值

GTK_HOME

C:\gtk+

INCLUDE

C:\gtk+\include

LIB

C:\gtk+\lib

PATH

C:\gtk+\bin

三 配置codeblock

For
GTK+2:

启动codeblock,点击"File"->"New"->"GTK+
Project"创建一个GTK+2项目.

For
GTK+3:

启动codeblock,点击"File"->"New"->"Empty
Project"创建一个空项目,由于

codeblocks目前只支持GTK+2,所以这里只好建立一个空项目然后自己设置。

点击"Project"->"build
options"

1:选择“Compiler
settings”标签中的Other
options子标签,在其中加入编译选项

-mms-bitfields

选项解释:编译GTK程序必须的选项

2:选择“Linker
settings”标签

  • 在"Link
    libraries"中点击"Add"按钮加入gtk+
    lib,注意在弹出的文件选择对话框中将c:\gtk+\lib\目录下的文件全选就就可以将所有选中的文件一次性加入了,不需要一个一个的加入。

  • 在Other
    Linker options加入链接选项

-mwindows

选项解释:告诉编译器去编译一个窗口程序,生成的程序可以去掉控制台。如果你正在写一个终端程序或需要在终端调试信息,那么不要加这个选项!

3:选择“Search
directories”标签

在"Compiler"子标签中加入GTK+的头文件路径,这里比较郁闷,只能一条条的添加,所以用到哪个功能添加哪个功能吧.

For
GTK+2:

C:\gtk+\include

C:\gtk+\include\atk-1.0

C:\gtk+\include\atk-1.0\atk

C:\gtk+\include\cairo

C:\gtk+\include\fontconfig

C:\gtk+\include\freetype2

C:\gtk+\include\freetype2\freetype

C:\gtk+\include\freetype2\freetype\config

C:\gtk+\include\gail-1.0

C:\gtk+\include\gail-1.0\gail

C:\gtk+\include\gail-1.0\libgail-util

C:\gtk+\include\gdk-pixbuf-2.0

C:\gtk+\include\gdk-pixbuf-2.0\gdk-pixbuf

C:\gtk+\include\gio-win32-2.0

C:\gtk+\include\gio-win32-2.0\gio

C:\gtk+\include\glib-2.0

C:\gtk+\include\glib-2.0\gio

C:\gtk+\include\glib-2.0\glib

C:\gtk+\include\glib-2.0\gobject

C:\gtk+\include\gtk-2.0

C:\gtk+\include\gtk-2.0\gdk

C:\gtk+\include\gtk-2.0\gtk

C:\gtk+\include\libpng14

C:\gtk+\include\pango-1.0

C:\gtk+\include\pango-1.0\pango

C:\gtk+\include\pixman-1

C:\gtk+\lib\glib-2.0\include

C:\gtk+\lib\gtk-2.0\include

For
GTK+3:

C:\gtk+\include

C:\gtk+\include\atk-1.0

C:\gtk+\include\atk-1.0\atk

C:\gtk+\include\cairo

C:\gtk+\include\fontconfig

C:\gtk+\include\freetype2

C:\gtk+\include\freetype2\freetype

C:\gtk+\include\freetype2\freetype\config

C:\gtk+\include\gail-3.0

C:\gtk+\include\gail-3.0\libgail-util

C:\gtk+\include\gdk-pixbuf-2.0

C:\gtk+\include\gdk-pixbuf-2.0\gdk-pixbuf

C:\gtk+\include\gio-win32-2.0

C:\gtk+\include\gio-win32-2.0\gio

C:\gtk+\include\glib-2.0

C:\gtk+\include\glib-2.0\gio

C:\gtk+\include\glib-2.0\glib

C:\gtk+\include\glib-2.0\gobject

C:\gtk+\include\gtk-3.0

C:\gtk+\include\gtk-3.0\gdk

C:\gtk+\include\gtk-3.0\gtk

C:\gtk+\include\jasper

C:\gtk+\include\libcroco-0.6

C:\gtk+\include\libcroco-0.6\libcroco

C:\gtk+\include\libpng15

C:\gtk+\include\librsvg-2.0

C:\gtk+\include\librsvg-2.0\librsvg

C:\gtk+\include\libxml2

C:\gtk+\include\libxml2\libxml

C:\gtk+\include\lzma

C:\gtk+\include\pango-1.0

C:\gtk+\include\pango-1.0\pango

C:\gtk+\include\pixman-1

C:\gtk+\lib\glib-2.0\include

C:\gtk+\lib\libffi-3.0.12\include

一般来说就这些,如果安装了新的库再加。

4:点击"Setting"->"Global
Variables..."会弹出一个"Global
Variable“的窗口,在这里配置gtk的编译选项,

For
GTK+2:

base

C:\gtk+

include

C:\gtk+\include

lib

C:\gtk+\lib

cflags

`pkg-config
--cflags gtk+-2.0`

lflags

`pkg-config
--libs gtk+-2.0`

For
GTK+3:

base

C:\gtk+

include

C:\gtk+\include

lib

C:\gtk+\lib

cflags

`pkg-config
--cflags gtk+-3.0`

lflags

`pkg-config
--libs gtk+-3.0`

然后就可以编译gtk+程序了,如果没有安装GTK+运行时,运行gtk+程序还会报错,

这需要将C:\gtk+\bin下的所有DLL文件都复制到项目的bin\Debug目录下,之后

就可以运行了。

四 Q&A

Q1

ld.exe||cannot
open output file bin\Debug\test.exe Permission denied|||=== Build
finished: 1 errors, 0 warnings ===| 编译出现这个错误是什么原因

A1

新的数据无法写入\Debug\test.exe文件,这是因为原来的那个test.exe程序还在
运行,在进程管理器里把它杀掉就好了。

Q2

C:\gtk+\include\glib-2.0\glib\gtypes.h|34|fatal error: glibconfig.h:
No such file or directory| ||=== Build finished: 1 errors, 0 warnings
(0 minutes, 0 seconds) ===|

A2

在搜索路径里添加C:\gtk+\lib\glib-2.0\include,详见三:配置codeblock中的第3小节.

Code::Blocks配置GTK+2和GTK+3的更多相关文章

  1. Code::Blocks 配置

    需要另外下载安装GCC编译器 配置主题皮肤: 先替换' default.conf ' (需要关闭code::blocks) Settings>Editor>(左栏)Syntax highl ...

  2. code::blocks配置编译cuda并进行第一个demo的測试

    我们先新建个NVCC的编译器. 使用复制GCC编译器的方式进行新建,然后我们进行下面的路径配置 先来看看链接库,将我们常常使用的cuda库链接进来. 然后链接cuda的头文件: 接着配置调试工具以及编 ...

  3. 使用Code::Blocks配置Python编译环境

    1.先在CodeBlock中新建C或C++工程. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所 ...

  4. 使用code::blocks编译windows的dll链接库

    因为机子上没有安装Visual Studio,所以找到了一种通过code::blocks编译dll的方式,踩到的坑是code::blocks默认的compiler是32位的,这样编译出的dll也是32 ...

  5. 利用Code::Blocks搭建64位C++开发平台

    0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...

  6. ubuntu下code::blocks编译运行一个简单的gtk+2.0项目

    在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...

  7. ubuntu下使用code::blocks编译运行一个简单的gtk+2.0项目

    在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...

  8. Code::Blocks项目配置基础

    File 菜单 New :新建( Empty file/file . class . project . build target ) . Recent projects/files :近期打开的项目 ...

  9. code::blocks(版本10.05) 配置opencv2.4.3

    (1)首先下载opencv2.4.3, 解压缩到D:下: (2)配置code::blocks, 具体操作如下: 第一步, 配置compiler, 操作步骤为Settings  -> Compil ...

随机推荐

  1. 由Struts return SUCCESS引发的基础问题

    该问题的最初来源,是源于Struts中的 return SUCCESS; 和 return "success"; 在Struts的配置文件struts.xml我们可以找到" ...

  2. 添加了有道生词本的 chrome google翻译扩展和有道翻译扩展

    在chrome发布项目,需要先花美金认证,还得要美国ID,无奈. 直接上源码,需手动导入. 原始项目源码并未开源,个人是从chrome本地文件里拿出来的,拓展来的,侵删(本来想着自已写一个,业余时间, ...

  3. RPM包的制作

    RPM包的制作 前言 按照其软件包的格式来划分,常见的Linux发行版主要可以分为两类,类ReadHat系列和类Debian系列,这两类系统分别提供了自己的软件包管理系统和相应的工具. 类RedHat ...

  4. My安卓知识3--多个activity之前共享数据的方法

    在网上搜这个问题的时候看到了有一篇文章说有五种方法: 1.基于消息的通信机制  Intent ---boudle ,extra 数据类型有限,比如遇到不可序列化的数据Bitmap,InputStrea ...

  5. 编译安装或者mysql启动时遇到的错误小记

    编译安装遇到的错误:进入mysql目录 [root@localhost software]# cd mysql-5.6.19 [root@localhost mysql-5.5.11]# cmake ...

  6. onethink和thinkphp3.2学习

    thinkphp发布3.2版本之后,也发布了一个简单的内容管理系统onthink,这样有助于理解thinkphp3.2的使用: 一.首先最关键的一点是thinkphp3.2中加入了命名空间的使用 什么 ...

  7. cookie,session原理,以及如何使用chrome查看。

    首先,先补充下chrome浏览器的使用. 1.1.php源码: <?php $cookieDomain = '.elf.com'; setcookie(, '/', $cookieDomain) ...

  8. 20145229&20145316 《信息安全系统设计基础》实验三 实时系统的移植

    实验封面 实验内容 1.安装ADS(安装文件在00-ads1.2目录下,破解方法00-ads1.2\Crack目录下) 2.安装GIVEIO驱动(安装文件在01-GIVEIO目录下) 3.把整个GIV ...

  9. ZOJ3795_Grouping

    告诉你某些人的年龄大小关系,问你把所有的人分成若干个组,最少需要多少组,使得组内任意两个人的年龄不可比. 首先考虑特殊情况,如果所有年龄关系构成了一个环,那么这个环中所有人的年龄都是相等,也就是可比的 ...

  10. [C#基础实例]指定地址解析图片并下载

    需求:查找页面图片并下载至本地: 实现: 首先:读取通过网络html内容,并用正则表达式查找图片地下. 其次:使用WebRequest.Create创建图片请求. 最后:把获取图片网络流数据通过Fil ...