2015-04-24 13 views
11

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 = "*" 
+0

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

Trả lời

10

Theo như tôi đọc các tài liệu here, điều này nên bây giờ làm việc:

[target.'cfg(unix)'.dependencies] 
abc-sys = "*" 
def = "*" 

[target.'cfg(windows)'.dependencies] 
abc-win = "*" 
+2

Vâng, điều này đúng ngay bây giờ. Câu trả lời của tôi là rất cũ, và bây giờ không chính xác. –

0

Hiện không có cách nào để thực hiện việc này. Nó sẽ là tốt đẹp, chắc chắn.

+0

Câu trả lời này giờ đã lỗi thời. Vui lòng xem câu trả lời của ** @ Andrew Straw **. – Toothbrush

Các vấn đề liên quan