我的Cargo文件中有一个依赖项,需要根据平台不同,特别是默认功能.这是我想要做的:
[package]
name = "..blah.."
version = "..blah.."
authors = ["..blah.."]
[target.'cfg(target_os = "macos")'.dependencies]
hyper = { version = "0.9", default-features = false, features = ["security-framework"] }
[target.'cfg(target_os = "linux")'.dependencies]
hyper = { version = "0.9", default-features = true }
Run Code Online (Sandbox Code Playgroud)
但这似乎没有做我想要的.在我的Mac上,它似乎正在使用底部目标线,就像我刚刚指定的那样hyper = "0.9".如果我cargo build按指定的方式执行操作,则会遇到有关openssl的错误:
cargo:warning = #include <openssl/ssl.h>
但是,如果我像这样构建它:
[dependencies]
hyper = { version = "0.9", default-features = false, features = ["security-framework"] }
Run Code Online (Sandbox Code Playgroud)
然后它建立良好.这向我表明cfg,"macos"不起作用.
我如何使这项工作,或更具体地说,如何解决我需要依赖平台使用不同功能的问题?
Rust 1.13.0 和 Cargo 0.13.0-nightly 似乎不可能实现这一点。请参阅货物问题3195和1197。
作为解决方法,您可以告诉 Cargo 使用 Homebrew 的 OpenSSL:
export OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include
export OPENSSL_LIB_DIR=`brew --prefix openssl`/lib
export DEP_OPENSSL_INCLUDE=`brew --prefix openssl`/include
Run Code Online (Sandbox Code Playgroud)