2013-06-26 36 views
5

Tôi có một thư viện phụ thuộc vào một số thư viện khác và tất nhiên là thời gian chạy haskell. Nó xuất khẩu API C. Tôi muốn xây dựng nó theo cách hoàn toàn khép kín và người dùng sẽ không bị làm phiền khi cài đặt haskell, cabal và tất cả các phụ thuộc.Làm thế nào để xây dựng một thư viện khép kín với cabal?

+0

Làm thế nào để bạn tưởng tượng người dùng thư viện tương tác với thư viện? Một lựa chọn là tạo các gói (rpm, deb, dmg, vv) trong khi một tùy chọn khác là thêm hàng trăm megabyte cơ sở hạ tầng xây dựng vào bản phân phối nguồn của thư viện của bạn. –

+0

@ ThomasM.DuBuisson Tôi nghĩ anh ấy muốn một cái gì đó tương tự như một giải pháp đa dự án. –

+0

@ ThomasM.DuBuisson Họ sẽ liên kết mã của họ với thư viện bằng gcc, giống như ghc khi tôi gọi nó như thế này: 'ghc -no-hs-main -static test.c libMylibrary.a ' – user1887615

Trả lời

1

nó đã hoàn toàn khép kín và người sử dụng sẽ không bị làm phiền với việc cài đặt Haskell, cabal và tất cả các phụ thuộc

Sau đó bạn phải phân phối thư viện của bạn với tất cả các phụ thuộc của nó - trình biên dịch Haskell, thời gian chạy, thư viện C, Cabal, thư viện phụ thuộc. Đây là một nhiệm vụ không tầm thường - bạn đang tự mình cuộn Haskell Platform.

Bạn có thể sửa đổi nguồn HP và tạo trình cài đặt. Chúng sẽ có hiệu lực các trình cài đặt độc lập cho thư viện của bạn.

+0

Tôi không hiểu tại sao lại như vậy. Tôi có thể xây dựng một tệp C kiểm tra gọi thư viện của tôi bằng cách liệt kê rõ ràng tất cả các tệp .a của phụ thuộc. Nó sẽ không thể để chỉ đóng gói tất cả các phụ thuộc vào một .a lớn và phân phối nó như là thư viện của tôi? Tôi chỉ cần thư viện của mình để được gọi từ mã C, chứ không phải mã haskell. – user1887615

+0

Có, bạn có thể viết trình cài đặt/trình cài đặt của riêng bạn có tất cả các phụ thuộc của bạn và liên kết chúng. –