Rust 如何将项目目录外的源代码打包到Cargo中? 我试图为C++库密码创建生锈绑定。实际的代码是有效的,但我不确定如何正确地将其与货物打包在一起

Rust 如何将项目目录外的源代码打包到Cargo中? 我试图为C++库密码创建生锈绑定。实际的代码是有效的,但我不确定如何正确地将其与货物打包在一起,rust,rust-cargo,Rust,Rust Cargo,git存储库看起来像 src/ 这里的C++代码 .gitignore 自述等。 我添加了一个rust目录,并像这样在其中创建了我的Cargo项目 锈蚀/ 加密卫星/ 货舱 建造 src/ 这里有锈码 src/ 这里的C++代码 .gitignore 自述等。 遗憾的是,货物包< /C> >似乎不想包任何Rux/CuffTimiSISAT目录之外的东西,这意味着它不包括实际构建库所需的C++代码。我能做什么?如果可以避免的话,我不想将整个存储库移动到rust目录中,因为这样就不可能合并到上游

git存储库看起来像

src/
这里的C++代码
.gitignore
自述等。
我添加了一个
rust
目录,并像这样在其中创建了我的Cargo项目

锈蚀/
加密卫星/
货舱
建造
src/
这里有锈码
src/
这里的C++代码
.gitignore
自述等。

遗憾的是,<代码>货物包< /C> >似乎不想包任何Rux/CuffTimiSISAT目录之外的东西,这意味着它不包括实际构建库所需的C++代码。我能做什么?如果可以避免的话,我不想将整个存储库移动到
rust
目录中,因为这样就不可能合并到上游。

通常的解决方法是:

    >P>使用Git子模块(或在发布之前运行的脚本)将C++ RePO的副本嵌入RISE RePO(例如在 >中)。在开发过程中,可以使用Syrink来避免C++代码的两个副本。

  • 使用
    build.rs
    在构建时下载tarball/clone/rsync代码。您可以将其转储到Cargo指定的
    OUT\u DIR
    env var中,以避免污染用户可见的目录

  • < P>使C++代码成为系统级库。Rust软件包不会构建它,但希望它已经安装,并且只搜索它并为它指定链接标志。这就是大多数
    *-sys
    板条箱的工作原理


符号链接怎么样?或者,锈蚀绑定应该在一个单独的项目中,并且可以使用Git子模块引用C++代码。有<代码> Git < /C>工具(<代码> Git子模块< /C> >和<代码> Git Sudie),这使得在自己的内部管理远程存储库变得更容易。我可以详细说明这是否对您有用。rust-lua53项目采用不同的方法,并在构建时从
build.rs
下载Lua源代码。