搭建windows平台GTK+-3.0开发环境

摘要:
前言最近了解了GTK+-3.0接口开发。由于系统环境是Windows,所以打开Linux虚拟机进行开发总是有点麻烦。因此,它开始寻找在Windows上快速构建GTK+-3.0编译环境的方法。尝试之后,大约有三种方法。下面将详细介绍这些方法。

前言

最近在了解GTK+-3.0界面开发相关,由于自身用的系统环境是windows,开个linux虚拟机来开发的话总归是麻烦了点,于是开始寻找 windows上快捷搭建 GTK+-3.0 编译环境的方法,在经过尝试后,大概有三种办法,下面会对这些方法进行详细介绍。


msys2

第一种方法便是是使用 msys2 跨平台编译环境,安装 mingw32 直接在控制台中使用命令对 GTK+-3.0 工程进行编译,基于 msys2 的 mingw32 编译环境的具体搭建方法可以参考我之前的文章:
https://magicdmer.site/783.html

当我们搭建完环境后,打开 mingw32 环境安装 GTK+-3.0 开发库,如下

Administrator@MRROBOT-PC MINGW32 ~
# pacman -Ss gtk3     //查询安装包
mingw32/mingw-w64-i686-gtk3 3.24.23-1 [已安装]
...

Administrator@MRROBOT-PC MINGW32 ~
# pacman -S mingw-w64-i686-gtk3

Administrator@MRROBOT-PC MINGW32 ~
# pacman -S mingw-w64-i686-pkg-config

接着我们新建一个 GTK+-3.0 源码文件 main.c

#include <stdio.h>
#include <gtk.h>

int main()
{
	gtk_init(NULL);
	......
	gtk_main();
}

然后使用下面的命令进行编译

gcc main.c `pkg-config --cflags --libs glib-2.0 gtk+-3.0` -o helloword

这种方法就是比较原始的方法了,但是我们后续的方法都是基于这个 msys2的mingw32 环境来展开的


msys2 + visualstudio + visualgdb

这种办法就是使用IDE了,要比上面的方法方便太多,这里最主要的是这个 visualgdb ,这是个vs的跨平台开发插件,是收费的。所以如果你要使用的话,可能需要去找个特别版本,网上可以搜到。

我们下载 visualgdb 安装后,新建工程,如图
搭建windows平台GTK+-3.0开发环境第1张
因为我们讲述的是在windows上开发gtk3,所以我们选择 MingGW 工程,它也支持远程创建linux工程,本地修改代码后自动同步到linux机器进行编译调试,暂且不表

后续的设置如图所示
搭建windows平台GTK+-3.0开发环境第2张
搭建windows平台GTK+-3.0开发环境第3张
Toolchain选项需要设置成你安装 msys32 的位置

然后工程新建完毕,我们在工程上右键,选择 VisualGDB 设置,设置如下:
搭建windows平台GTK+-3.0开发环境第4张

为了方便大家拷贝(这也是这种方法麻烦的地方),这里发一下参数:

include: E:msys32mingw32include E:msys32mingw32includegtk-3.0 E:msys32mingw32includeglib-2.0 E:msys32mingw32libglib-2.0include E:msys32mingw32includepango-1.0 E:msys32mingw32includecairo E:msys32mingw32includegdk-pixbuf-2.0 E:msys32mingw32includeatk-1.0

lib: gtk-3.dll glib-2.0 gio-2.0 gdk-3.dll cairo atk-1.0.dll pango-1.0.dll gobject-2.0

然后大家就可以愉快的开发的! 这种方法相对于第一种方法要简单,但是我依旧感觉每次新建工程都要配置一堆参数是很蛋疼的事情,所以我接着寻找


msys2 + codeblocks (推荐)

下载地址:http://www.codeblocks.org/downloads/binaries
这个方法是我推荐的方法,超级简单,首先我们配置一下编译器
Settings --- compiler

搭建windows平台GTK+-3.0开发环境第5张

然后需要做的就是自定义一个 gtk+-3.0 的工程向导模板,因为自带的只有 gtk+-2.0 的,如图:
搭建windows平台GTK+-3.0开发环境第6张

如图,这个 GTK+-3.0 project 是我自定义的工程模板,新建完后工程如下:
搭建windows平台GTK+-3.0开发环境第7张

这个默认的 main.c 也是我自定义的模板,大家可以自行修改,模板文件如下:
链接: https://pan.baidu.com/s/1WljtnhG1ocnqW25pv8OWAA
提取码: cycy

然后解压后放到 codeblock 的 wizard 目录,我的是
C:Program FilesCodeBlocksshareCodeBlocks emplateswizard
然后修改该目录下的 config.script 文件,注册我们的工程模板

RegisterWizard(wizProject,     _T("gtk3"),         _T("GTK+-3.0 project"),      _T("GUI"));

然后启动 codeblocks 新建工程就可以看到我们的工程模板了,在这个界面是可以右键对模板进行修改的,修改后后续可以随时右键恢复。如果没有出现模板,那么请在这个新建界面右键编辑全局文件,IDE会打开 config.script 文件让我们修改,修改完后重启 codeblocks 即可
这种方式感觉是最好的方法,linux上也可以使用它进行gtk+-3.0开发


总结

上面就是三种在windows上搭建gtk+-3.0工程编译环境的方法,除了这三种之外,还有其他的,比如 vscode+cmake 的方式,由于文章太长了就不写了,大家可以自行去搜索了解

免责声明:文章转载自《搭建windows平台GTK+-3.0开发环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql常见的引擎服务器压力上不去原因分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

glib

一、glib介绍 libc指C函数库,这是一个通称,而glibc是GNU实现的libc,至于glib是一组较高层的函数库,比如链表、Hash等,在linux中glib是建立在glibc之上的,qt的库就叫做qt,也是建立在glibc和其他一些基本库之上。 GLib是Gtk +库和Gnome的基础。GLib可以在多个平台下使用,比如Linux、Unix、Wi...

使用Debian的kernelpackage系统创建自己的内核

使用Debian的kernel-package系统创建自己的内核 1.简介我曾经手动编译内核,这必须按顺序进行一系列的步骤;kernel-package就是写来完成这些所必须的步骤的.(现在他已超出这个范畴,但是实际上, 那正是他所完成的).这对于新手来说是相当重要的:make-kpkg完成了编译一个内核所需的所有步骤,并且内核的安装是一个快照.--...

第一个GTK+程序

在这一章节中,我们将开始编写第一个GTK+程序。 超级简单的例子 我们要“制造”一个超级简单的GTK+程序。就是显示一个空白的窗口。 #include <gtk/gtk.h> int main( int argc, char *argv[]) { GtkWidget *window; gtk_init(&argc, &...

腾讯蓝鲸 cmdb 源码编译

  腾讯蓝鲸 cmdb 源码编译环境依赖 环境包参考: golang>=1.8 python>=2.7.5 Node.JS>=4.0.0(编译过程中需要可以连公网下载依赖包) Python 环境 wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz tar -...

Python -扩展C++-Pytorch扩展

1.Python whl 文件和 egg 文件 可以执行和效率是两码事 setup.py用来编译和安装扩展模块。负责编译c++模块,封装成python可以调用的形式 所有能被整合或导入到其它python脚本的代码,都可以被称为扩展 Python调用C库比较简单,不经过任何封装打包成so,直接使用python的ctypes调用即可。 Pytho...

关于跨平台的一些认识

前段时间看了 周志明的那本 《深入理解java虚拟机》。对于平台无关性问题,有了一些新的认识。所以特写一篇博客来进行总结。 这是我的第一篇不针对具体技术,而只针对计算机系统和原理的博客文章,而这种话题,总是比较宽泛,而我本人的水平有限,所以我也只能泛泛的写写,思考的不对的地方,还望读者不吝批评。 C为什么不能跨平台 咱们先来讨论一下,C语言的执行过程,从而...