如何强制 cbindgen 扩展当前包中的宏并将它们包含在输出中?

问题描述 投票:0回答:1

我将当前的板条箱名称包含在 cbindgen.toml 文件中

[parse.expand]
# A list of crate names that should be run through `cargo expand` before
# parsing to expand any macros. Note that if a crate is named here, it
# will always be parsed, even if the blacklist/whitelist says it shouldn't be.**
#
# default: []
crates = ["currentcrate"]

我还在当前包中添加了一个 build.rs 文件,以便在运行构建时生成 c 标头绑定。但是每当我在扩展部分包含当前的板条箱名称时,构建就会失败。 即使运行 cbindgen 命令行来获取与扩展宏对应的 C 标头也不起作用

rust
1个回答
0
投票

它对我有用,但有一个巨大的警告,导致结果无法使用:我可以将

crates
中的
[parse.expand]
设置为当前板条箱,但随后
cbindgen
尝试使用仅在 nightly 工具链上可用的命令,该命令是不可能的,因为我需要建立在稳定的基础上。

如果你想跳过障碍,你可以使用一个构建脚本来完成,该脚本使用夜间工具链运行

cbindgen
,然后使用稳定的工具链进行实际构建 - 我刚刚放弃并放置了一个货物扩展版本我的源中的宏输出并注释掉了宏调用。

© www.soinside.com 2019 - 2024. All rights reserved.