Misalnya, jika untuk proyek Anda, Anda selalu melakukan kompilasi silang menggunakan cargo build --target=thumbv6m-none-eabi
. Fitur ini memungkinkan Anda menambahkan pasangan nilai kunci ke file konfigurasi kargo Anda:
# .cargo/config
[target]
default = "thumbv6m-none-eabi"
Itu akan membuat Anda cukup memanggil cargo build
untuk mengkompilasi silang proyek Anda untuk thumbv6m-none-eabi
. Ini juga akan meluas ke cargo doc
.
Awalnya dilaporkan di sini .
Ini tampaknya cukup masuk akal bagi saya, meskipun saya mungkin mengatakan bahwa itu harus di Cargo.toml karena kemungkinan itu adalah hal per-proyek _jika_ itu adalah hal untuk memulai.
Satu kelemahan (?) dari menjadikannya sebagai pengaturan proyek adalah bahwa pengaturan akan selalu diabaikan untuk dependensi. Contoh: Jika proyek saya P tergantung pada peti D dan D telah menetapkan T sebagai target default, pengaturan itu akan _selalu_ diabaikan karena D akan selalu dikompilasi untuk target yang saya pilih untuk P.
Salah satu keuntungan menggunakan .cargo/config adalah jika saya mengembangkan beberapa peti secara lokal, maka saya dapat memiliki pengaturan seperti ini:
$ tree .
my-RTOS-project
├── .cargo
│ └── config
├── allocator
│ └── (...)
├── hal
│ └── (...)
├── RusTOS
│ └── (...)
└── scheduler
└── (...)
Dan saya dapat melompat dari satu direktori peti ke yang lain dan menjalankan cargo test
. Pada titik tertentu saya dapat mengedit satu baris di .cargo/config dan mulai menguji peti saya untuk target yang berbeda.
Ah iya memang! Itu agak berada di bawah lingkup https://github.com/rust-lang/cargo/issues/2122 di mana _tidak boleh_ menjadi kerugian, tetapi masih ada beberapa pekerjaan desain yang harus dilakukan di sana juga.
Komentar yang paling membantu
Ini tampaknya cukup masuk akal bagi saya, meskipun saya mungkin mengatakan bahwa itu harus di Cargo.toml karena kemungkinan itu adalah hal per-proyek _jika_ itu adalah hal untuk memulai.