Tôi có một sự phụ thuộc trong tệp Cargo của mình cần phải khác nhau theo nền tảng, cụ thể là các tính năng mặc định. Đây là những gì tôi đang cố gắng làm:Tại sao phụ thuộc nền tảng cụ thể cuối cùng được ưu tiên trong Hàng hóa?
[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 }
Nhưng điều này dường như không làm những gì tôi muốn. Trên máy Mac của tôi, dường như nó đang sử dụng dòng đích dưới cùng như thể tôi đã chỉ định hyper = "0.9"
. Nếu tôi cargo build
theo quy định, tôi nhận lỗi liên quan đến openssl với:
hàng: cảnh báo = # include <openssl/ssl.h>
Tuy nhiên, nếu tôi xây dựng nó như thế này:
[dependencies]
hyper = { version = "0.9", default-features = false, features = ["security-framework"] }
Sau đó, nó được xây dựng tốt. Điều này cho tôi biết rằng cfg
cho "macos" không hoạt động.
Làm cách nào để thực hiện công việc này hoặc cụ thể hơn, làm cách nào để giải quyết vấn đề mà tôi cần sự phụ thuộc của tôi để sử dụng các tính năng khác nhau theo nền tảng?
Tại sao điều này không phải là một bản sao của http://stackoverflow.com/q/29854912/155423? – Shepmaster
Tôi đoán nó không phải là một bản sao vì cú pháp ở trên dường như phù hợp với các ví dụ trong [kiểm tra đơn vị] (https://github.com/rust-lang/cargo/blob/master/tests/cfg.rs) và [ cam kết] (https://github.com/rust-lang/cargo/pull/2328/commits/f5d786e05600720ba4671caf5b598624103c8f72). – wimh
@Shepmaster cũng về lý thuyết họ đang cố gắng giải quyết cùng một vấn đề, vì vậy tôi cho rằng câu hỏi của tôi là "Tại sao tệp Hàng hóa của tôi không chọn cấu hình đúng cho sự phụ thuộc". – vcsjones