Rust语言GUI库之gtk安装

文章目录

工具链安装管理软件vcpkg

vcpkg介绍

在使用C/C++编写项目时, 引用第三方库是很麻烦的事, 需要手动下载源码然后编译最后再添加到项目里,配置头文件、lib、dll,如果是一个简单点的库,编译加配置起来也不麻烦,可能半个小时或一个上午就能解决;如果是一个复杂点的库,那可能是一天、乃至一周可能都无法编译成功,例如ffmpeg, openssl,gRPC等等,这些库在windows上的的编译极其麻烦,如果是新手,可能更痛苦。相比 java有maven,python有pip,go有go mod, C#有NuGet,Rust有cargo,这些语言在导入第三方库时都很方便,修改版本也方便,但是对于C++项目则很痛苦,vcpkg的出现解决了C/C++编译第三库困难的问题,vcpkg跨平台, 在windows、linux、MacOS都可以使用。安装vcpkg,想要使用哪个库,vcpkg只要一条命令, 直接用安装编译,无需配置头文件、lib、dll, 直接写代码即可,十分的方便。

官网:https://vcpkg.io

安装vcpkg

1、安装vs英语语言包

vcpkg安装第三方库时,会有visual studio的语言不是英语的错误,如果不安装英语语言包,使用vcpkg安装第三方库时会有如下报错

Error: in triplet x64-windows: Unable to find a valid Visual Studio

instance The following VS instances were excluded because the English

language pack is unavailable:

例如我的电脑安装的是vs2022社区版,需要修改安装,增加英语语言包

设置-应用-vs2022



2.clone vcpkg

进入你想安装的文件夹(比如D:\vcpkg),打开PowerShell命令行执行

bash 复制代码
git clone https://github.com/Microsoft/vcpkg.git .

如果网络不好,可能无法clone, 需要有合理良好的网络环境(如何访问github请自查)。

vcpkag clone 好后,执行脚本bootstrap-vcpkg.bat下载vcpkg.exe,如下

bash 复制代码
$ bootstrap-vcpkg.bat

安装gtk

如果你的rust环境是gnu的,务必切换回msvc

bash 复制代码
$ rustup default stable-msvc

直接在vcpkg上安装gtk(最新的vcpkg默认就是gtk4)

bash 复制代码
$ vcpkg install gtk --triplet x64-windows

安装好后(安装时间很长,请耐心等待,我等了1个多小时,见上图),只需要设置两个环境变量

(下文的%VCPKGDIR%是你vcpkg的安装目录,不要照搬)

bash 复制代码
$ SET PKG_CONFIG_PATH %VCPKGDIR%\installed\x64-windows\lib\pkgconfig
$ SET GTK_LIB_DIR %VCPKGDIR%\installed\x64-windows\lib

将vcpkg装好的gtk4库的dll暴露到搜索路径中,加入环境变量PATH中

bash 复制代码
$ SET PATH=%VCPKGDIR%\installed\x64-windows\bin;%PATH%

然后编写一个Cargo.toml

bash 复制代码
[dependencies]
gtk = { version = "0", package = "gtk4" }

就可以用gtk-rs开发了

生成的文件不大,release模式编译完,加上dll依赖,用7z压缩完不到6Mb,程序非常小巧。

遇到的问题

一开始,我把vcpkg安装到D:\Program Files\vcpkg下出现如下问题:

bash 复制代码
Call Stack (most recent call first):  
scripts/cmake/vcpkg_build_make.cmake:151 (vcpkg_execute_build_process) 
scripts/cmake/vcpkg_install_make.cmake:2 (vcpkg_build_make)   
ports/libiconv/portfile.cmake:39 (vcpkg_install_make)   
scripts/ports.cmake:170 ...
bash 复制代码
error: building libiconv:x64-windows failed with: BUILD_FAILED Elapsed time to handle libiconv:x64-windows: 6.5 min
bash 复制代码
libtool:   error: 'Files/vcpkg/buildtrees/libiconv/x64-windows-dbg/lib/libcharset.la' is not a directoryCMake Error at 

问题总结:

win11下,能确定的是D:\Program Files\vcpkg需要管理员权限才能可写,至于为什么会出现如上的问题,不得而知;后来我把vcpkg安装到D:\vcpkg下终于编译安装成功。

Rust其他依赖package-confg

下载package-confg工具pkg-config-lite(zip压缩包,我们只需要bin目录下的单文件),并将该可执行文件的目录设置环境变量。

相关推荐
2401_858286116 分钟前
109.【C语言】数据结构之求二叉树的高度
c语言·开发语言·数据结构·算法
天之涯上上9 分钟前
JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值
java·开发语言·sql
666和77719 分钟前
C#的单元测试
开发语言·单元测试·c#
小王爱吃月亮糖25 分钟前
QT开发【常用控件1】-Layouts & Spacers
开发语言·前端·c++·qt·visual studio
zyh_03052134 分钟前
GIN中间件
后端·golang·gin
字节程序员42 分钟前
四种自动化测试模型实例及优缺点详解
开发语言·javascript·ecmascript·集成测试·压力测试
程序员老冯头42 分钟前
第十六章 C++ 字符串
开发语言·c++
hnmpf1 小时前
flask-admin modelview 中重写get_query函数
后端·python·flask
灵槐梦1 小时前
【速成51单片机】2.点亮LED
c语言·开发语言·经验分享·笔记·单片机·51单片机
想睡觉 . 我也想睡觉 .1 小时前
【C++算法】1.【模板】前缀和
开发语言·c++·算法