如何在Rust / Cargo中处理第三方静态C库依赖关系?

用户名

我想在Rust项目中链接一个第三方C库。它托管在github上,仅作为静态库进行编译。有什么办法让Cargo为我获取此依赖关系?我在想没有。我尝试将其添加为依赖项,并收到“在...中找不到Cargo.toml”错误。

作为替代方案,我考虑过修改build.rs文件以使用git2-rs板条箱下载该库的标签,该标签可能指定为通过环境变量传递的标签名称。

另一种选择是将C库的源代码包括在我的项目中,但是我在想如果我的板条箱的用户想要在我的板条箱中使用其他(但兼容)版本的3rd party库,他们不会能够轻松地做到这一点。

那么社区中的其他人如何处理这种情况呢?

Shepmaster

通常,您要创建一个libfoo-sys板条箱该板条箱将具有一个编译脚本,该脚本可编译本机库并设置链接器选项。

构建脚本可以使用诸如cc crate之类的构建时依赖性来简化下载和编译本机库的过程。

您可以使用环境变量或功能来选择本机库的来源。您可以使用用户已经由其系统软件包管理器安装的版本(或者可能是手工编译的版本),可以从某处下载源代码,可以将代码包含在存储库中,或者可以使用git子模块进行引用另一个git仓库,而不是实际复制代码。

在许多情况下,您还将使用rust-bindgen之类的工具为C库创建“原始” Rust绑定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Rust 中为第三方库实现迭代器

在Rust中,如何定义或导入第三方库中的C结构?

如何在C ++中正确处理线程中永久挂起的第三方库调用?

如何在Maven POM中处理第三方JAR和远程存储库?

如何在C ++ Windows中包含第三方库?

如何在Xcode 6.0中构建和包含第三方C库

如何处理第三方库中的警告/提示?

如何在Create React App应用程序中处理第三方依赖项的CSS

我应该如何在setup.py脚本中处理导入第三方库?

我如何从NAnt的NuGet服务器获得第三方依赖关系?

如何在Dragal 8中使用Packosist上未安装的第三方库安装第三方库?

如何在Eclipse中的第三方库中设置断点?

如何在angular 6中捕获第三方库中的数据?

如何在React中处理第三方dom操纵?

如何在C#中正确处理第三方对象(TelegramBotClient)

如何将第三方静态库与新创建的 cmake 项目链接?

如何使用第三方库依赖项部署Javaagent

使用第三方库时如何应用依赖项反转原则?

如何在Symfony 3.3中加载第三方库

如何在React钩子中初始化第三方库(konvajs)

如何在styles.xml中引用第三方库的attrs?

如何在Ant的javadoc任务中链接第三方库

如何在Google App Engine中包含第三方Python库?

如何在Meteor.js中包含第三方JavaScript库?

如何在发行版中附加第三方库

如何在React Native中抑制由于第三方PropTypes库引起的警告

如何在Android cmake外部构建系统中链接第三方库?

如何在Java中更改第三方库的日志级别

如何在ReactJS应用中插入第三方库