用GoLang编写有界面的程序(-)环境

程序员黑洞

2020-08-06 15:03
关注

平时都是编写没有界面的工具,今天突然想到要是有个有界面的管理监控程序也不错。

那问题就是:去哪里找UI库?

不用想,网上搜一下:(关键字:GOLANG UI)

搜go语言界面UI编程:GOLANG UI

图中可见,第一个就非常好的网站。

如下图,可以看到有“Web based Go GUI”和“Desktop based Go GUI”,但我还是喜欢基于桌面的,于是就找到了gotk3。qt也是一个大型的UI框架,还有一个ui据介绍说是很轻量级的框架,还有一个walk仅支持windows系统。webview这个是跨平台的。

几个UI框架

既然选择了gotk3。那先去看看例子。(代码在这里:github.com/gotk3/gotk3-examples/),用GOLAND 2020.1,编译运行(后面多次运行的都是它)。出错了:

直接运行例子,出错如图

# pkg-config --cflags -- gio-2.0 glib-2.0 gobject-2.0

pkg-config: exec: "pkg-config": executable file not found in %PATH%

这个错误提示:在环境变量path中找不到pkg-config.exe

一想,也是哦,我连gotk3的框架都没有安装呢!

安装gotk3

就在上面搜索到GOlang UI的网站Learn GO Programming上 ,gotk3的项目下,有个去安装的链接:https://github.com/gotk3/gotk3

github gotk3 如图

安装说明书 在这里 https://github.com/gotk3/gotk3/wiki#installation

对于windows系统,安装说明书在这里 https://github.com/gotk3/gotk3/wiki/Installing-on-Windows

官方安装说明书在这里 https://www.gtk.org/docs/installations/windows/

看说明书了解到:要安装MSYS2 ,如果要编译发布还要安装UI的主题 。

第一步安装MSYS2

windows系统下,两种方式:

第一种 使用包管理工具Chocolatey:

先装golang(这个已经安装过了) C:\> choco install golang

再装(这个也已安装) C:\> choco install git

再装msys2(这个需要安装) C:\> choco install msys2

在控制台运行 C:\> mingw64 打开一个窗口,即类linux环境:

$ pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-toolchain base-devel glib2-devel $ echo 'export PATH=/c/Go/bin:$PATH'>> ~/.bashrc$ echo 'export PATH=/c/Program\ Files/Git/bin:$PATH'>> ~/.bashrc $ source ~/.bashrc $ sed -i -e 's/-Wl,-luuid/-luuid/g'/mingw64/lib/pkgconfig/gdk-3.0.pc # This fixes a bug in pkgconfig$ go get github.com/gotk3/gotk3/gtk

第二种方式:(我使用的这种方式)

需要下载 MSYS2 installer----msys2-x86_64-20200720.exe。运行即安装。安装完成后即有了UINX-like developement 开发环境--一些软件工具包和库,还有GTK工具栈。

我安装在c:/msys64 。在环境变量path中增加这个路径。让IDE和命令行终端能找到它。

第二步,安装gtk3

在命令行执行msys2,即打开MSYS2 shell。运行命令:

pacman -S mingw-w64-x86_64-gtk3

mingw-w64-x86_64-gtk3安装完成

第三步,强烈建议安装 glade

它是GTK的UI设计器。设计好的界面可以导出XML格式,我们可以import到项目里,使用GtkBuilder API来加载。

pacman -S mingw-w64-x86_64-glade

UI设计器Glade安装

安装完Glade这个GtkBuilder后,C:\msys64\mingw64\bin 就有编译文件了,此路径需要加到“系统变量”PATH。

这时候,运行一下代码,发现还是找不到pkg-config.exe. 按说明继续安装环境。

第四步是用python3开发GTK (如果仅用GO开发,则不用安装)

因为我的电脑环境是python3,命令如下

pacman -S mingw-w64-x86_64-python3-gobject

python3-gobject安装成功 如图

第五步 可选。安装build tools。

这一步没有安装时,编译代码还是出错。

pacman -S mingw-w64-x86_64-toolchain base-devel

因为提示缺少pkg-config.exe ,故选择14,14) mingw-w64-x86_64-pkg-config

: 在组 base-devel 中有 58 成员:

:: 在组 base-devel 中有 58 成员:

那选哪个?看到有45) pkg-config ,加上前面编译错误信息提示pkg-config,就选这个45。

安装完成后,发现用户环境变量下增加了 C:\msys64\usr\bin。并且使用Everything搜索工具也找到了 pkg-config.exe

如图:已安装pkg-config.exe

再次运行项目代码,发现错误提示:

重启IDE,编译,错误:

按错误提示配置 PKG_CONFIG_PATH 环境变量

错误提示与环境变量

重启IDE,编译错误:

# github.com/gotk3/gotk3/glib exec: "gcc": executable file not found in %PATH%

到这里,可以想到,我电脑上应该还没有安装gcc这个编译工具。

那怎么安装呢?这第五部本来就是安装工具链。能否使用这个命令继续安装?

重新执行命令pacman -S mingw-w64-x86_64-toolchain base-devel,分别选3和45.安装完成。

$ pacman -S mingw-w64-x86_64-toolchain base-devel3) mingw-w64-x86_64-gcc 输入某个选择 ( 默认=全部选定 ): 345) pkg-config 输入某个选择 ( 默认=全部选定 ): 45(7/8) 正在安装 mingw-w64-x86_64-gcc [############################################] 100%(8/8) 正在重新安装 pkg-config [############################################] 100%

安装完成,重启IDE,运行项目,出错:

# github.com/gotk3/gotk3/glibexec: "gcc": executable file not found in %PATH%

提示说需要配置环境变量 gcc.exe 的路径放到path中。

重启IDE,运行项目,出错:

#\glib\application.go:3:11: fatal error: gio/gio.h: No such file or directory3 | // #include <gio/gio.h>| ^~~~~~~~~~~compilation terminated.

感觉走到了死胡同,到底哪里错了?再次回顾安装过程:

pacman -Sy

mingw-w64-x86_64-gtk3

mingw-w64-x86_64-toolchain 包括GCC 和pkg-config

环境变量有 “C:\msys64\mingw64\bin”(这个大概是用来找pkg-config.exe)和“C:\msys64”

如果从cmd命令行编译 则需要 go get github.com/gotk3/gotk3/gtk

如果打开IDE编译,则已经可以了。

应该还是有个路径配置错了--重新检查环境变量,把用户环境变量下C:\msys64\usr\bin换成C:\msys64\mingw64\bin。再回到IDE编译,成功。

总结,其实编译环境按官方说明也可以,就是有时候错了不知道怎么解决。这时候只能多搜一下,看看别人怎么做的。实际上却是有人更加简单的实现了环境搭建。

但,我想的是既然官方有文档,先按官方的来。故还是遇到好多坑,学到不少东西。

我是程序员黑洞,正在学习GO,欢迎关注,留言,交流。

举报/反馈