Mam zależność w moim pliku Cargo, która musi być inna w zależności od platformy, a konkretnie od domyślnych funkcji. Oto, co próbuję zrobić:Dlaczego ostatnia zależność od platformy ma pierwszeństwo w 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 }
Ale to nie wydaje się robić tego, co chcę. Wydaje się, że na moim Macu używałem dolnej linii docelowej, tak jakbym właśnie określił hyper = "0.9"
. Gdybym nie cargo build
określony, pojawiają się błędy w odniesieniu do OpenSSL:
cargo: ostrzeżenie = # include <openssl/ssl.h>
Jednakże, jeśli budować to tak:
[dependencies]
hyper = { version = "0.9", default-features = false, features = ["security-framework"] }
Potem wszystko dobrze się układa. To wskazuje mi, że cfg
dla "macos" nie działa.
Jak to zrobić, a dokładniej, jak rozwiązać problem, w którym potrzebuję zależności, aby korzystać z różnych funkcji na platformie?
Dlaczego to nie jest duplikatem http://stackoverflow.com/q/29854912/155423? – Shepmaster
Chyba nie jest to duplikat, ponieważ powyższa składnia wydaje się pasować do przykładów z [testów jednostkowych] (https://github.com/rust-lang/cargo/blob/master/tests/cfg.rs) i [ commit] (https://github.com/rust-lang/cargo/pull/2328/commits/f5d786e05600720ba4671caf5b598624103c8f72). – wimh
@Shepmaster również w teorii próbują rozwiązać ten sam problem, więc przypuszczam, że moje pytanie brzmi: "Dlaczego mój plik Cargo nie wybiera właściwej konfiguracji dla zależności". – vcsjones