Code::Blocks配置GTK+2和GTK+3
Code::Blocks配置GTK+2和GTK+3
作者 |
He YiJun – storysnail<at>gmail.com |
||||||
团队 |
ls |
||||||
版权 |
转载请保留本声明! 本文档包含的原创代码根据General Public License,v3 发布 本文档根据GNU 文中所引用的软件版权详见各软件版权具体声明,文中所提及的所有商标均为各自商标所有人的财产。 |
||||||
更新 |
|
这篇文章的第一版还是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 |
|
base |
C:\gtk+ |
include |
C:\gtk+\include |
lib |
C:\gtk+\lib |
cflags |
`pkg-config |
lflags |
`pkg-config |
For |
|
base |
C:\gtk+ |
include |
C:\gtk+\include |
lib |
C:\gtk+\lib |
cflags |
`pkg-config |
lflags |
`pkg-config |
然后就可以编译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的更多相关文章
- Code::Blocks 配置
需要另外下载安装GCC编译器 配置主题皮肤: 先替换' default.conf ' (需要关闭code::blocks) Settings>Editor>(左栏)Syntax highl ...
- code::blocks配置编译cuda并进行第一个demo的測试
我们先新建个NVCC的编译器. 使用复制GCC编译器的方式进行新建,然后我们进行下面的路径配置 先来看看链接库,将我们常常使用的cuda库链接进来. 然后链接cuda的头文件: 接着配置调试工具以及编 ...
- 使用Code::Blocks配置Python编译环境
1.先在CodeBlock中新建C或C++工程. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所 ...
- 使用code::blocks编译windows的dll链接库
因为机子上没有安装Visual Studio,所以找到了一种通过code::blocks编译dll的方式,踩到的坑是code::blocks默认的compiler是32位的,这样编译出的dll也是32 ...
- 利用Code::Blocks搭建64位C++开发平台
0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...
- ubuntu下code::blocks编译运行一个简单的gtk+2.0项目
在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...
- ubuntu下使用code::blocks编译运行一个简单的gtk+2.0项目
在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...
- Code::Blocks项目配置基础
File 菜单 New :新建( Empty file/file . class . project . build target ) . Recent projects/files :近期打开的项目 ...
- code::blocks(版本10.05) 配置opencv2.4.3
(1)首先下载opencv2.4.3, 解压缩到D:下: (2)配置code::blocks, 具体操作如下: 第一步, 配置compiler, 操作步骤为Settings -> Compil ...
随机推荐
- [刘阳Java]_什么是MyBatis_第1讲
1.什么MyBatis,我们先通过百度百科先进行一个简单的了解 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation ...
- 笔记本win8,mac10.10,ubuntu,android四系统安装
前言,最简单的是win8和ubuntu 最难啃的是mac android版只是要注意一个小技巧,目前算是独创 (被android坑了一次,两块硬件,android版把500Gntfs的硬盘整个识别为一 ...
- JavaScript语法结构
一:字符集 1.区分大小写 JavaScript是区分大小写的语言 所有的标识符(identifier)都必须采取一致的大小写形式 但是Html并不区分大小写(尽管Xhtml区分) 2.空格.换行符和 ...
- .net多线程
线程 线程池 异步 异步更新winform界面 线程同步
- Linux命令(ntp)
NTP时间同步 下载ntp软件包 root@rgw01:~# apt-get install ntp 调整ntp server时间 root@rgw01:~# date Mon Dec 1 17:02 ...
- MongoDB(NoSQL) 入门
一.简介 NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处, MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库. 本文主要讲述MongoD ...
- [django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来
今天在做一个注册页面的时候遇到了一个验证码图片在页面显示的问题. 我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染.因为r ...
- 封装ios静态库碰到的一些问题(二)
在静态库建立好了之后呢,于是应用程序就引用它,加上拷贝的h文件,但是引用之后Build之后提示很多sybmbol 重复 于是进行检查,确实由于是从其他工程修改过来的,很多基础库都引用了,删除之,最后就 ...
- sqlserver中的表值函数和标量值函数
顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例创建 ...
- oracle方案是什么?
某用户拥有的所有的数据库对象的逻辑集合,就叫方案:方案在名称上和用户名是相同的. 比如有一个Oracle"用户"叫scott,那么一般称Scott用户所拥有的所有数据库对象的集合叫 ...