rust - 当 native 库不存在时,如何构建 FFI crate 的 docs.rs 文档?

标签 rust documentation rust-cargo

我有一个静态链接到库的“sys”包:

cargo .toml:

[package]
links = "foo-1.0"

build.rs:

fn main() {
    println!("cargo:rustc-link-lib=dylib=foo-1.0");
}

当我发布包时,docs.rs 无法生成文档,因为没有安装 libfoo:

error: failed to run custom build command for `foo-sys v0.0.1`

Caused by:
  process didn't exit successfully: `/home/cratesfyi/cratesfyi/debug/build/foo-sys-f4bd3ee95677500b/build-script-build` (exit code: 1)
--- stderr
`"pkg-config" "--libs" "--cflags" "foo-1.0 >= 1.0"` did not exit successfully: exit code: 1
--- stderr

如何配置我的 crate,以便在不安装库的情况下生成文档?

最佳答案

about/build page of docs.rs提供更多相关信息。 docs.rs 将设置一个环境变量 DOCS_RS

可以在 build.rs 中禁用链接:

fn main() {
    if std::env::var("DOCS_RS").is_ok() {
        println!("cargo:rustc-link-lib=dylib=foo-1.0");
    }
}

关于rust - 当 native 库不存在时,如何构建 FFI crate 的 docs.rs 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57158261/

相关文章:

rust cargo : how to use different features for a dep when a particular feature is enabled?

rust - 运行安装在 Debian 中的 Rust 二进制文件时如何传递 RUST_BACKTRACE=1?

rust - 使用Box对结构进行反序列化

rust - 由于递归结构中的需求冲突,无法推断出合适的生命周期

Eclipse Scala 插件不显示 scala 项目中的类和方法的文档

documentation - 谷歌语音 API 文档

documentation - 如何生成 rdoc 风格的可折叠代码段?

mysql - 在 mac OS 中安装 mysqlclient 库

for-loop - Rust 中 for 循环的确切定义是什么?

Rust 安装导致终端权限问题