美文网首页
转:Rust和Windows不得不说的事儿

转:Rust和Windows不得不说的事儿

作者: HuJay | 来源:发表于2019-04-30 17:20 被阅读0次

Rust和Windows不得不说的事儿

6 分钟前

很多Rust新手(包括一些老手)在Windows上搭建Rust开发环境的时候,总是会纠结到底安装MSVC版还是GNU版本。

刚开始我也遇到过此类问题,大概在1年前(本人使用Rust差不多2年),因为有使用MSYS2的经验,所以刚开始优先装的是GNU版本,不过自从某机缘下研究了Diesel作者的pg-sys的源码后,意外发现了微软自家的vcpkg这么个好东西,从此就只使用MSVC版本了,相信读完本文章后,你们也会的:)

首先,是vcpkg项目地址:Microsoft/vcpkg,各位英文肯定比我好,所以不用我来介绍此项目了

其次准备环境:

Windows版本的Git

Visual Stuido,社区版就可以,√上C/C++工具链以及Win SDK

按照vcpkg的项目指引,编译vcpkg,最后添加环境变量:

PATH里添加vcpkg.exe所在的目录

VCPKG_HOME设置成vcpkg代码路径

最最最重要的是设置VCPKGRS_DYNAMIC这个环境变量,1或者true随便,确保存在就行

下面就以很多人碰到的编译安装diesel_cli这个工具的场景来介绍如何使用vcpkg,根据错误提示,我们知道diesel_cli依赖libpq, libmysqlclient, libsqlite3这3个库,那我们分别执行:

vpkg search pq

vcpkg install libpq:x64-windows //如果是64位系统的话,不加冒号后面默认是32位

vcpkg search mysql

vcpkg install libmysql

vcpkg search sqlite3

vcpkg install sqlite3

安装完,我们怎么确保Rust确实能找到这些库呢?这里就需要另一个工具了,Rust的vcpkg_cli(其实还对应一个vcpkg库,后面会说),顺便提下,这个工具我也提过pr,因为在早期版本无法probe xxx-1.0这种形式的库,最新版已经换了probe机制了,桑心。。。

cargo install vcpkg_cli

vcpkg_cli probe sqlite3

vcpkg cli probe libmysql

vcpkg cli probe libpq

会看到会列出头文件和库的路径,然后这些信息会被相应crate的build.rs里使用。

然后我们就开心的cargo install diesel_cli啦。。。

所有这一切的前提是,这个crate使用了vcpkg来写build.rs,那么肯定有同学问了,如果我使用的上游库没有使用怎么办?当然是自己写个提PR啦,不过前提是依赖在vcpkg search里能搜到哦,不然要先给vcpkg仓库提PR,嘿嘿。。。

比如我给某不可描述的工具使用的libsodium-ffi 提的PR,https://github.com/zonyitoo/libsodium-ffi/pull/6,稍微看看就知道怎么写了,很简单的。

如果有疑问,欢迎留言,因为此文章都是靠记忆写的,很多环境我都搭建好了,也许有遗漏。

编辑于 17:12

Rust 编程

相关文章

网友评论

      本文标题:转:Rust和Windows不得不说的事儿

      本文链接:https://www.haomeiwen.com/subject/wigvnqtx.html