使用Rust的Cargo进行构建时不同的目标名称

4
有没有一种使用Cargo进行构建,并为开发和发布配置设置不同目标名称的方法?例如,rustlibd.a和rustlib.a?
1个回答

3

不同的编译信息(调试和发布)由一个名为“profile”的配置文件控制。您可以在源代码中查看与配置文件相关的所有键值。我所看到的唯一相关选项是rustc_options。通过运行具有详细输出模式的构建,您可以查看Cargo如何调用Rustc:

$ cargo build --verbose
   Compiling namez v0.1.0 (file:///private/tmp/namez)
     Running `rustc --crate-name namez src/lib.rs --crate-type lib --emit=dep-info,link -C debuginfo=2 -C metadata=5444c772a04e08f3 -C extra-filename=-5444c772a04e08f3 --out-dir /private/tmp/namez/target/debug/deps -L dependency=/private/tmp/namez/target/debug/deps`
    Finished dev [unoptimized + debuginfo] target(s) in 0.45 secs

不幸地是,更改--crate-name并没有你想要的效果。


相反,我要指出的是,您已经拥有一个不同的文件名,只是您需要更广泛地搜索:

target/debug/libname.a
target/release/libname.a

调试和发布文件在不同的目录中。无论您要执行什么操作来移动具有不同名称的库,都必须处理调试和发布目录。只需更新您的脚本:
mv target/debug/libname.a libnamed.a
mv target/release/libname.a libname.a

好的,谢谢。我原本希望能够只使用Cargo就足够了。但我也知道Cargo无法执行构建后脚本,因此在这种情况下应该使用外部构建工具。 - user2303909

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接