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目录下的单文件),并将该可执行文件的目录设置环境变量。

相关推荐
XiaoLeisj44 分钟前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck1 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
励志成为嵌入式工程师2 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉2 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer2 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
码农小旋风2 小时前
详解K8S--声明式API
后端
Peter_chq2 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml43 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~3 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616883 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端