You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Cargo feature为link属性添加条件式key?

实现条件性添加raw-dylib到link属性

你可以使用Rust的cfg_attr宏来实现这一需求,它能根据指定的Cargo feature条件,动态为link属性添加kind = "raw-dylib"参数,无需拆分整个属性。

具体代码实现

将原有的link属性修改为:

#[link(
    name = "foo",
    #[cfg_attr(feature = "use-raw-dylib", kind = "raw-dylib")]
)]

或者更紧凑的单行写法:

#[link(name = "foo", cfg_attr(feature = "use-raw-dylib", kind = "raw-dylib"))]

原理说明

cfg_attr(feature = "use-raw-dylib", kind = "raw-dylib")的作用是:当用户启用use-raw-dylib特性时,这段代码会展开为kind = "raw-dylib"并加入link属性的参数列表;未启用时,该部分会被忽略,link属性保持原有的name = "foo"形式。

补充:在Cargo.toml中定义特性

别忘了在你的库的Cargo.toml里声明这个特性,让用户可以启用它:

[features]
use-raw-dylib = []

用户启用特性的方式:

cargo build --features use-raw-dylib

内容的提问来源于stack exchange,提问作者rodrigocfd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:48:11