Windows 下使用 OpenSSL 编译 Rust 项目

不得不说,还是有很多人在 Windows 环境下进行开发,毕竟 Windows 下还要打游戏。 在 Windows 下进行 Rust 开发,安装 Rust 的 ToolChain 是很简单,但是稍微有点规模的项目,构建完整的编译环境就是有些折腾了,是不是这个也会劝退很多学习 Rust 的人?

这里就不说 Rust 的安装了,直接说 Windows 下编译 Rust 项目的 OpenSSL 问题。当然,首先你要有 C/C++ 的安装环境。最好的办法就是安装 Visual Studio Community,这个是免费的,安装的时候选择 C++ 的开发环境就可以了。但是非常建议你安装所有跟 C/C++ 有关的支持,谁知道编译系统的时候会遇到什么。

安装 OpenSSL 有很多选择,建议在 The Win32/Win64 OpenSSL Installation Project 下载安装最新的 Win64 版本进行安装。安装完成后,打开 “编辑系统环境变量” 的这个应用,在最下面找到 “环境变量(N)” 点击会有编辑环境变量的窗口。在 “系统变量(S)” 中点击 “新建(W)” ,添加三个环境变量。

OPENSSL_DIR=C:\Program Files\OpenSSL-Win64
OPENSSL_INCLUDE_DIR=C:\Program Files\OpenSSL-Win64\include
OPENSSL_LIB_DIR=C:\Program Files\OpenSSL-Win64\lib\VC\x64\MD

最后在 'PATH' 的环境变量列表中检查 C:\Windows\System32\OpenSSH\ 在不在其中,如果不在请添加进去,这样 OpenSSL 就配置完成了。很少会出现 error: failed to run custom build command for openssl-sys v0.9.73 这样的错误。或者是如下错误:

cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR
cargo:rerun-if-env-changed=OPENSSL_DIR

当然也可以采用 vcpkg 这个工具来安装 OpenSSL ,这里暂不讲述如何配置。