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_OS
,CARGO_CFG_TARGET_ARCH
等環境變量是沒有關系的;
build時加個-v可以查看這次build用到了哪些依賴;
3.如果要區分Windows10,Windows7,可以自定義target,這個待研究,初步看了下和
RUST_TARGET_PATH
有關;