Cargo.toml配置


0.在Cargo.toml里添加的依赖,哪怕程序里没有用到,它也会编译(不过由于没有用到,第二次build就不会再去编译了【但是不是说就随便添加,比如我们的代码在依赖a里和依赖b(我们的代码相当于是依赖的插件,即我们给依赖库写依赖代码)里都会用到,然而我们在Windows系统只需要依赖a,Linux系统只需要依赖b,如果我们两个都添加了,然后改了代码,会导致a和b都重新构建,所以最好是用cfg来条件添加依赖】),所以最好是只添加会用到的依赖;

1.有的时候我们可能会遇到这种情况,就是希望如果要编译的目标平台(比如交叉编译由Ubuntu - Windows[10|7|8]),我们希望不同的target添加一些额外的切换一些依赖【最典型的就是GUI后端,win7是DX11,win10是DX12,MacOS是Metal,Linux是Vulkan】

2.这个时候我们可以用这种dependencies配置:

[dependencies]
[target.'cfg(target_os = "windows")'.dependencies]
nameof = "1.0"

[target.'cfg(target_os = "linux")'.dependencies]
serde="1"

这里的target_os是根据我们cargo build --target=x86_64-pc-windows-gnu来的,我们可以用rustc --print=cfg --target=x86_64-pc-windows-gnu命令查看当target平台是x86_64-pc-windows-gnu的时候,target_os,target_arch,target_env等是什么;

CARGO_CFG_TARGET_OSCARGO_CFG_TARGET_ARCH等环境变量是没有关系的;

build时加个-v可以查看这次build用到了哪些依赖

3.如果要区分Windows10,Windows7,可以自定义target,这个待研究,初步看了下和RUST_TARGET_PATH有关;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM