如何在不更改构建系统的情况下在 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?