2011-09-01 15 views
6

Tôi đang cố gắng giữ cho dự án của mình được khép kín, với tất cả các phụ thuộc thư viện của bên thứ ba chính được xây dựng và tham chiếu trong kho lưu trữ dự án. Các phần ocaml chính của dự án của tôi dựa vào ocamlbuild.Có thể sử dụng chuỗi công cụ ocamlfind/ocamlbuild với các bản sao gói dự án cục bộ dự án như thế nào?

Nhưng đối với các gói phức tạp như Pin Bao gồm, có vẻ như là một kỳ vọng mạnh mẽ rằng chúng được liên kết với một dự án thông qua ocamlfind. ocamlfind dường như giả định rằng các gói sẽ được cài đặt trên toàn cầu. (Tôi nhận ra nó cho phép các biến môi trường và conf của nó trỏ đến các vị trí thay thế, nhưng về cơ bản nó dường như vẫn được xây dựng xung quanh giả định rằng các gói được cấu hình trên toàn cầu - nó không tương đương với các cờ -I hoặc -L để tự động mở rộng đường dẫn tìm kiếm Ví dụ: có thể đặt các biến môi trường để ghi đè cấu hình ocamlfind tự động để tìm kiếm cây dự án cục bộ, nhưng điều này còn khó xử hơn các đối số, và nó cũng có vẻ khó thực hiện mà không có đồng thời loại bỏ năng tìm được của các gói hệ thống chính trong chính site-lib, mà cũng có thể là cần thiết.)

một chiến lược lành mạnh để xây dựng và xây dựng chống lại mệnh 3rd nontrivial là gì ty gói trong một cây dự án địa phương cho một dự án sử dụng ocamlbuild?

Trả lời

3

Sử dụng biến môi trường (hoặc findlib.conf riêng) là một cách để đi (và dễ dàng). Và nó không yêu cầu loại bỏ khả năng phát hiện của các gói toàn cầu, xem hướng dẫn tham khảo cho pathdestdir trong số findlib.conf (OCAMLPATHOCAMLFIND_DESTDIR biến môi trường tương ứng).

Về cơ bản bạn thiết destdir đến con đường địa phương khi cài đặt gói dự án địa phương, và thêm vào trước -path khi sử dụng chúng (đừng quên tạo stublibs trong destdir (và thêm nó vào ld.conf trong stdlib nếu bạn đang xây dựng bytecode nhị phân)).

PS Tôi nghĩ đây là phương pháp được sử dụng trong ocsigen-bundler.

Vui lòng cho biết nếu bạn gặp phải bất kỳ sự cố nào (vì tôi cũng quan tâm đến việc sử dụng phương pháp tương tự này).

+0

Tôi đã không làm hỏng tuyến đường này cho đến nay, vì vậy tôi đã chậm để xác nhận thành công, nhưng tôi hy vọng nó sẽ hoạt động. – jrk

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