我的Cargo.toml的一部分:
[features]
wasm = ["ed25519-dalek/nightly", "rand/wasm-bindgen", "js-sys"]
字符串
当crate在另一个项目中使用时,这是有效的,并且明确选择了“wasm”特性。
我想仅在目标拱门为WASM时自动启用此功能。我尝试添加以下内容:
#[cfg(target_arch = "wasm32")]
default = ["wasm"]
型
当我为WASM以外的目标编译时,“wasm”被包含为默认值,我如何才能使“wasm”仅在目标是WASM时才成为默认值?
2条答案
按热度按时间n7taea2i1#
您只能拥有特定于目标的依赖项,而不是特定于目标的功能。这是一个自2015年以来不幸开放的known bug。
人们希望支持这种语法,但现在还没有任何计划来实现这一点:
字符串
作为一个丑陋的解决方法,你可以创建另一个依赖于你的crate的crate,让用户使用这个新的crate:
型
8ehkhllq2#
我也有同样的问题。
我最终使用
build.rs
在使用特定目标时启用功能。字符串
build.rs
个型
这里我想在目标为wasm 32-unknown-unknown时启用
wasm
功能。请注意,cargo不支持此操作,此操作将在依赖项解析后运行。
所以如果我把
web-sys
设为可选的,并把wasm = ["dep:web-sys"]
用作一个不起作用的特性。