Rust 将Cargo与我的项目自己的目录结构一起使用

Rust 将Cargo与我的项目自己的目录结构一起使用,rust,directory-structure,rust-cargo,Rust,Directory Structure,Rust Cargo,我可以使用Cargo来构建锈迹代码而不使用它吗 我的源文件不在名为src的目录中,这不会更改。我的二进制文件必须在当前目录中结束,或者在其他一些项目中,在另一个不是target/SOMETHING的目录中结束。我可以告诉Cargo,可执行的foo必须从foo.rs和bar.rs构建,与Cargo.toml位于同一目录中,而qux必须从foo.rs构建吗 我不关心作为构建系统或部署系统的货物。我只对它作为图书馆管理系统感兴趣 不太可能。通过在清单中显式指定源文件,可以控制源文件的位置: [[bin

我可以使用Cargo来构建锈迹代码而不使用它吗

我的源文件不在名为src的目录中,这不会更改。我的二进制文件必须在当前目录中结束,或者在其他一些项目中,在另一个不是target/SOMETHING的目录中结束。我可以告诉Cargo,可执行的foo必须从foo.rs和bar.rs构建,与Cargo.toml位于同一目录中,而qux必须从foo.rs构建吗

我不关心作为构建系统或部署系统的货物。我只对它作为图书馆管理系统感兴趣

不太可能。通过在清单中显式指定源文件,可以控制源文件的位置:

[[bin]]
name = "foo"
src = "foo.rs"

[[bin]]
name = "qux"
src = "splong.rs"
我不知道你所说的foo是从foo.rs和bar.rs构建的,而qux是从foo.rs构建的。您不能随意地将源文件放在一起:foo.rs要么使用bar.rs,要么不使用

但是您无法从清单中控制目标目录。中有build.target-dir设置,而不是清单,但它只允许您更改目标目录,而不是其中的第二级。您可以使用更改,但也不能在清单中设置环境变量

这就是说,将CARGO_TARGET_DIR设置为项目的根目录也会更改所有中间文件的位置,这意味着每次在调试版本和发布版本之间切换时,都必须进行完整的重新编译


你可能想考虑打开一个关于这个选项的问题。为什么?约定优先于配置和所有…@MatthieuM。我一直不明白为什么它不是“配置优于约定”。约定失败:如果您有两个具有不兼容约定的组件,您会怎么做?你被一股不可抗拒的力量击中了一个不可移动的货物。如果你有两个不兼容的组件,你会怎么做?=>显然,您需要进行必要的更改,以便两者都符合约定。Cargo开发得足够早,从1.0开始就可以直接设置约定,这样所有项目都将遵循相同的约定。话虽如此,也许可以对它进行调整,从而解释我为什么评论,而不是回答;我只是想知道,就我个人而言,这是否是个好主意。。。更改项目的成本可能低于每个维护人员必须了解其工作方式不同的原因的成本。@MatthieuM。当然,货运业的发展还不够早,无法制定公约。目录树已经存在了半个多世纪了!并非所有项目都是纯粹的生锈项目。我有时在Java上也会遇到同样的问题,但Rust工具链在这方面似乎更糟糕。我显然是指Rust项目中的约定:无论如何,我并不是说这是不可能的,只是逆流而上总是一场艰苦的战斗。