Tôi đang viết một thư viện đa nền tảng có các phụ thuộc cụ thể nền tảng, một cho các nền tảng giống Unix và một cho các cửa sổ. Những thùng này chỉ biên dịch trên các nền tảng cụ thể, do đó tôi không thể chỉ thêm chúng dưới các phụ thuộc bình thường.Cách có các phụ thuộc khác nhau tùy thuộc vào họ hệ điều hành
Trong mã gỉ thực tế tôi sử dụng cfg
thuộc tính, như #[cfg(unix)]
để biên dịch mã nhất định cho nền tảng nhất định và tôi muốn thực hiện điều gì đó tương tự trong Cargo.toml hoặc trong tập lệnh xây dựng. Hiện tại, tôi đang sử dụng ba mục tiêu như sau:
[target.i686-unknown-linux-gnu.dependencies.crate1]
git = repo1
[target.x86-unknown-linux-gnu.dependencies.crate1]
git = repo1
[target.x86_64-unknown-linux-gnu.dependencies.crate1]
git = repo1
[target.i686-pc-windows-gnu.dependencies]
crate2 = "*"
[target.x86-pc-windows-gnu.dependencies]
crate2 = "*"
[target.x86_64-pc-windows-gnu.dependencies]
crate2 = "*"
Tuy nhiên, danh sách này còn chưa đầy đủ. Tôi không quan tâm đến kiến trúc hoặc ABI, chỉ có gia đình hệ điều hành, và như vậy, danh sách sẽ nhận được rất lâu, là tôi để phù hợp cho mỗi mục tiêu duy nhất unix ba.
Có cách nào để sử dụng các phụ thuộc cụ thể, chỉ được xác định bởi họ hệ điều hành của nền tảng hàng hóa được chạy trên không? Một cái gì đó như:
[target.family.unix.dependencies]
abc-sys = "*"
def = "*"
[target.family.windows.dependencies]
abc-win = "*"
bạn có thể thay đổi câu trả lời được chấp nhận dưới đây? tác giả của câu trả lời hiện được chấp nhận cũng đồng ý – hansaplast