2015-06-07 20 views
5

Có cách nào để liên kết với một thư viện không có trong đường dẫn gói hiện tại không.Liên kết với thư viện Windows bên ngoài thư mục build

Điều này link đề xuất đặt mọi thứ trong thư mục cục bộ. Các gói của chúng tôi được cài đặt trong một số kho lưu trữ ở nơi khác. Tôi chỉ muốn chỉ định libpath cho nó trên cửa sổ.

authors = ["Me"] 
links = "CDbax" 

[target.x86_64-pc-windows-gnu.CDbax] 
rustc-link-lib = ["CDbax"] 
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"] 
root = "Z:/Somepath//CPP/CDbax/x64/Debug/" 

Nhưng cố gắng hàng xây dựng -v mang lại cho tôi

package `hello v0.1.0 (file:///H:/Users/Mushfaque.Cradle/Documents/Rustc/hello)` specifies that it links to `CDbax` but does not have a custom build script 

Từ hướng dẫn hàng build script support, nó có vẻ gợi ý rằng điều này sẽ làm việc. Nhưng tôi có thể thấy rằng nó đã không thêm đường dẫn. Tuy nhiên, việc di chuyển lib vào đường dẫn địa phương bin\x68_64-pc-windows-gnu\ sẽ hoạt động.

Cập nhật Nhờ câu trả lời dưới đây, tôi nghĩ rằng tôi muốn cập nhật này để cung cấp các kết quả cuối cùng của những gì làm việc trên máy tính của tôi để người khác tìm thấy nó hữu ích.

Trong Cargo.toml thêm

links = "CDbax" 
build = "build.rs" 

Mặc dù không có tập tin build.rs, nó dường như đòi hỏi nó (?) Nếu không than phiền với

package `xxx v0.1.0` specifies that it links to `CDbax` but does not have a custom build script 

Tiếp theo là Vaelden trả lời của tạo tệp 'config' trong .cargo

Nếu đây là thùng phụ, bạn không cần đặt thẻ liên kết = vào thùng chính, mặc dù đó là một dll; ngay cả với 'chạy hàng'. Tôi cho rằng nó sẽ thêm con đường dll vào môi trường thực thi

Trả lời

6

Tôi nghĩ vấn đề là bạn đang lầm manifest của dự án của bạn với hàng cấu hình.

  • Các manifest là file Cargo.toml tại thư mục gốc của dự án của bạn. Nó mô tả dự án của bạn.
  • Cấu hình hàng hóa mô tả các cài đặt cụ thể cho hàng hóa và cho phép ví dụ ghi đè phụ thuộc hoặc trong kịch bản ghi đè trường hợp ghi đè của bạn. Các tập tin cấu hình hàng có một hierarchical structure:

Cargo cho phép để có cấu hình địa phương cho một dự án cụ thể hoặc global configuration (như git). Hàng hóa cũng mở rộng khả năng này lên chiến lược phân cấp . Nếu, ví dụ, hàng hóa được viện dẫn trong /home/foo/bar/baz, sau đó các tập tin cấu hình sau đây sẽ là thăm dò cho:

/home/foo/bar/baz/.cargo/config 
/home/foo/bar/.cargo/config 
/home/foo/.cargo/config 
/home/.cargo/config 
/.cargo/config 

Với cấu trúc này, bạn có thể xác định cấu hình địa phương cho mỗi dự án, và thậm chí có thể kiểm tra nó vào kiểm soát phiên bản. Bạn cũng có thể chỉ định mặc định cá nhân với tệp cấu hình trong thư mục chính của bạn.

Vì vậy, nếu bạn di chuyển các phần có liên quan:

[target.x86_64-pc-windows-gnu.CDbax] 
rustc-link-lib = ["CDbax"] 
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"] 
root = "Z:/Somepath//CPP/CDbax/x64/Debug/" 

đến bất kỳ vị trí chính xác cho một tập tin cấu hình hàng hóa, cần làm việc.

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