gpt4 book ai didi

build - 使用 Cargo 进行源代码构建(外部构建目录)?

转载 作者:行者123 更新时间:2023-11-29 07:42:29 25 4
gpt4 key购买 nike

使用 CMake 后,我已经习惯了外源构建,这是 CMake 所鼓励的。如何使用 Cargo 完成源外构建?


再次使用源内构建感觉像是倒退了一步:

  • 开发工具需要配置为忽略路径。有时需要多个插件和开发工具——尤其是使用 VIM 或 Emacs!
  • 某些工具无法配置为轻松隐藏构建文件。虽然点文件通常是隐藏的,但它们仍会显示 Cargo.locktarget/,更糟糕的是,递归地暴露它们的内容。
  • Deleting un-tracked files删除版本控制之外的所有内容,通常是清理编辑器临时文件或一些测试输出,如果您忘记将新文件添加到版本控制并且之前没有手动正确检查文件列表,可能会适得其反删除它们。
  • 依赖项被下载到您的源代码路径中,有时会在 target 目录中添加 *.rs 文件作为构建间接依赖项的一部分,因此对所有 进行操作*.rs 文件可能会意外获取不在隐藏目录中的其他文件,因此即使在配置开发工具后也可能不会被忽略。

虽然可以解决所有这些问题,但我宁愿只使用外部构建路径并保持源目录原始。

最佳答案

您可以通过 configuration file (key build.target-dir) 指定 target/ 文件夹的目录或 environment variable (CARGO_TARGET_DIR) .下面是一个使用配置文件的例子:

假设你想要一个目录~/work/,你想在其中保存 Cargo 项目(~/work/foo/),旁边是目标目录 (~/work/my-target/).

$ cd ~/work
$ cargo new --bin foo
$ mkdir .cargo
$ $EDITOR .cargo/config

然后将以下内容插入配置文件:

[build]
target-dir = "./my-target"

如果您随后在正常的 Cargo 项目目录中构建:

$ cd foo
$ cargo build

您会注意到没有 target/ 目录,但所有内容都在 ~/work/my-target/ 中。


然而,Cargo.lock 仍然保存在 Cargo 项目目录中,但这是有道理的。 For executables, you should check the Cargo.lock file into your git! For libraries, you shouldn't .我想忽略一个文件总比忽略整个文件夹要好。

最后,更改目标目录有一些注意事项,列在 in the PR which introduced the feature 中。 .

关于build - 使用 Cargo 进行源代码构建(外部构建目录)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41274901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com