我尝试将hyper作为依赖项添加到我的项目中,并且构建在openssl-rust上爆炸,因为它依赖于openssl头文件和库是操作系统的一部分,而OS X不再适用(图书馆在那里,但它是一个自定义构建,所以抓住其他地方的标题不会起作用)。我已经看过https://github.com/sfackler/rust-openssl/issues/255,https://github.com/sfackler/rust-openssl/issues/316和https://github.com/alexcrichton/gcc-rs/issues/63所以我知道我需要覆盖一些内容来设置货物构建系统中以下环境变量的等价物:
OPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include
OPENSSL_LIB_DIR=/usr/local/opt/openssl/lib
然而,看着http://doc.crates.io/build-script.html#overriding-build-scripts我还没有弄清楚我是怎么做到的。
我见过但有些事情没有想到可以接受的答案:
brew link --force openssl
cargo build
注意我已经看过OpenSSL crate fails compilation on Mac OS X 10.11(我在发布之前就已经看过了,应该早点说过)但是这个答案只是说每次编译时设置env变量(一个这种方式或其他方式)当我有一个覆盖构建脚本的系统时,如果有人可以解释它是如何工作的,那么我不愿意接受它作为答案。