我的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 }
但这似乎没有做我想要的。在我的Mac上,它似乎正在使用底部目标线,就像我刚刚指定hyper = "0.9"
一样。如果我按照指定执行cargo build
,则会出现与openssl相关的错误:
cargo:warning = #include< openssl / ssl.h>
但是,如果我像这样构建它:
[dependencies]
hyper = { version = "0.9", default-features = false, features = ["security-framework"] }
然后它建立良好。这向我表明“macos”的cfg
无效。
如何使这项工作,或更具体地说,如何解决我需要依赖平台使用不同功能的问题?
答案 0 :(得分:0)
使用Rust 1.13.0和Cargo 0.13.0-night可能看起来不可能。请参阅货物问题3195和1197。
作为解决方法,您可以tell Cargo to use Homebrew's 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