You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cargo项目中:专属多文件二进制可执行文件的存放路径咨询

解决方案:给可执行文件创建专属子目录

嘿,这个场景我太熟悉了!要让某个可执行文件的专属源文件只属于它自己、不被编译进库,最清晰且符合Cargo约定的方式是给该可执行文件创建专属的子目录。

具体步骤如下:

  1. 调整项目目录结构
    在src/bin下创建一个和你的可执行文件同名的子目录(比如exe1),然后把该可执行文件的入口文件改名为main.rs放在这个子目录里,同时把所有专属源文件也放进这个子目录。最终结构大概是这样:

    你的项目名/
    ├── Cargo.toml
    └── src/
        ├── lib1.rs
        ├── lib2.rs
        ├── lib3.rs
        └── bin/
            └── exe1/
                ├── main.rs       # exe1的入口文件
                └── exe1_helper.rs # 你的专属源文件,比如叫这个名字
    
  2. 在入口文件中引用专属文件
    在main.rs里,你可以直接通过模块的方式引用专属文件:

    // 在main.rs顶部声明模块
    mod exe1_helper;
    
    fn main() {
        // 使用专属文件里的功能
        exe1_helper::do_something();
    }
    

为什么这种方式可行?

  • Cargo会把src/bin下的每个独立.rs文件,或者包含main.rs的子目录,都当作独立的可执行目标。
  • 子目录里的所有文件都属于这个可执行文件的私有模块,完全不会被编译到项目的库部分(也就是src/下的库文件)里。

备选方案(不推荐,但可用)

如果你不想用子目录,也可以在src/bin下直接放相关文件,然后手动在Cargo.toml里指定可执行目标:

[[bin]]
name = "exe1"
path = "src/bin/exe1_main.rs"

然后把专属文件放在src/bin/exe1_helper.rs,在exe1_main.rs里用mod exe1_helper;引用就行。不过这种方式不如子目录直观,容易和其他可执行文件的文件重名,所以优先推荐子目录方案。

内容的提问来源于stack exchange,提问作者user1002430

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:20:19