如何在不更改构建系统的情况下在 C 项目中使用 rust 代码?

Posted

技术标签:

【中文标题】如何在不更改构建系统的情况下在 C 项目中使用 rust 代码?【英文标题】:How to use rust code in a C project while not changing the build system? 【发布时间】:2019-10-17 14:13:08 【问题描述】:

我试图将 nano 移植到 rust 并使用,但我不想更改构建系统或在同一个项目上也没有两个并发构建系统。

为了在 C 项目中使用 rust,我找到了 this guide,但这需要我更改构建系统或使用混合方法(即同时使用两个构建系统)。

【问题讨论】:

在 makefile 中使用 cargo 有什么问题? 不确定是否this will help. 具体是什么问题?我可以理解不想使用混合方法,但是在 Makefile (或其他)中调用 rustc 有什么问题?您尝试过什么/正在考虑尝试什么?有什么问题? 【参考方案1】:

rustc 可以以与cc 类似的方式调用,并生成与 C 兼容的静态库。如果您只添加一小部分不使用 Cargo 依赖项的 Rust,这可能很容易集成到 C 构建系统中。

但是,如果直接使用rustc,您将失去对 Cargo 的访问权限,并且它会像 C 的 deps 一样使用依赖项,除了 Rust 程序习惯于使用数百个依赖项。

所以最简单的方法是从现有的构建系统调用cargo build --release

【讨论】:

以上是关于如何在不更改构建系统的情况下在 C 项目中使用 rust 代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改声音指示器的情况下在 iOS 中以最大音量播放声音文件

如何在不导入所有函数的情况下在包中使用 data.table?

如何在不发布的情况下在 lerna monorepo 中构建 docker 镜像

有没有办法在不使用 ImageMagick 或其他第三方软件的情况下在 R 中制作 GIF?

想要在不使用 Scikit-Learn 的情况下在 python 中构建支持向量机的真正建议 [关闭]

C/C++ Linux,如何在不使用 IP 的情况下在网络上查找邻居(仅限 MAC)