2013-06-26 1 views
5

У меня есть библиотека, которая зависит от некоторых других библиотек и, конечно же, времени исполнения haskell. Он экспортирует C API. Я хочу построить его таким образом, чтобы он был полностью автономным, и пользователю не пришлось бы беспокоиться об установке haskell, cabal и всех зависимостей.Как создать автономную библиотеку с помощью cabal?

+0

Как вы представляете, как пользователи библиотеки взаимодействуют с библиотекой? Один из вариантов - сделать пакеты (rpm, deb, dmg и т. Д.), А другой вариант - добавить сотни мегабайт инфраструктуры построения в исходный дистрибутив вашей библиотеки. –

+0

@ ThomasM.DuBuisson Я думаю, он хочет что-то аналогичное многопроектному решению. –

+0

@ ThomasM.DuBuisson Они свяжут свой код с библиотекой с помощью gcc, как и ghc, когда я вызываю его так: 'ghc -no-hs-main -static test.c libMylibrary.a ' – user1887615

ответ

1

он был полностью автономным и пользователь не будет возиться с установкой Haskell, заговорщиков и все зависимости

Затем вы должны распространять свою библиотеку со всеми его зависимостями - компилятор Haskell, среда выполнения, библиотеки C, Cabal, зависимые библиотеки. Это нетривиальная задача - вы сами сворачиваете Haskell Platform.

Вы можете изменить источник HP и сгенерировать установщики. Они были бы фактически отдельными установщиками для вашей библиотеки.

+0

Я не совсем понимаю, почему так. Я могу создать тестовый файл C, вызывающий мою библиотеку, путем явного перечисления всех файлов зависимостей .a. Разве не удалось бы просто упаковать все зависимости в один большой .a и распространить его как мою библиотеку? Мне нужна только моя библиотека для вызова из кода C, а не кода haskell. – user1887615

+0

Да, вы могли бы написать собственный установщик/комплектщик, который принимает все ваши зависимости и связывает их. –