Встраивание движка Prolog в проекты Obj-C - PullRequest
3 голосов
/ 14 июля 2010

Я ищу легкий движок Prolog для встраивания в приложение Obj-C под Mac OSX.
В Java есть несколько отличных реализаций с нужными мне характеристиками: разворачиваемость, легкость, динамическая конфигурируемость, интеграция с Java и простота взаимодействия.Можете ли вы порекомендовать что-то подобное в C / C ++?


После нескольких поисков я нашел YAProlog и прочитал здесь , кажется, это можно использовать как библиотеку для вызова из других программ.Но (глупые вопросы):

  1. Я неопытен в UNIX и не знаю точно, как создать файл libyap.a с помощью этих команд руководства по YAP ...
  2. Могу ли я скопировать libyap.a в мой проект Xcode и использовать его?

1 Ответ

3 голосов
/ 14 июля 2010

GProlog поддерживает Mac OS X (Darwin) и есть установщик для Mac OS X Leopard.И здесь вы можете прочитать, как вызвать gprolog из C (читайте также this ).Тогда вместо использования gplc вы можете использовать gcc при условии, что вы добавите правильные параметры для связывания, что может быть немного «хитростью»;так что вы можете создавать объектные файлы с помощью gplc и затем склеивать все вместе ...

О YAP:

1) Обычно пакет с autoconf компилируется просто с помощью следующей "последовательности" команд

./configure
make

Финальный make install должен установить все и должен быть выполнен пользователем, имеющим на это право.В руководстве предлагается создать ARCH (ARCH.?) Dir и делать все оттуда (так, ../configure вместо ./configure).

Скрипт configure обычно принимает параметры, взгляните на них.В частности, проверьте, где находятся LIBDIR и YAPLIBDIR.

Итак, когда у вас есть архив с исходным кодом (.tar.gz источника), вы должны разархивировать его, команда, подобная tar -xzf Yap-5.1.3.tar.gz, работает сGNU / Linux и тот же tar должны быть также на Mac OS X ...

Давайте посмотрим на ./configure --help и посмотрим, увидите ли вы интересную опцию, которую хотите использовать, прежде чем продолжить.

Теперь, давайте последуем совету руководства (даже если оно мне покажется странным; -))

mkdir ARCH.  # I would put GNUlinux, or maybe
             # the name must be exactly this?
cd ARCH.
../configure

Вы ждете ... и в каталоге появится все, что нужно для следующего шага.Посмотрите на созданный Makefile, вы видите строки типа

#
# where YAP should look for binary libraries
#
LIBDIR=$(EROOTDIR)/lib
YAPLIBDIR=$(EROOTDIR)/lib/Yap

Среди целей Make-файла я могу прочитать также libYap.a.Итак, попробуйте make (я не буду делать этого, чтобы проверить, что может пойти не так, в том числе потому, что я нахожусь на GNU / Linux и способы решения проблем могут быть другими), в конце вы должны получить libYap.a и так, станьте "root" (администратор) и выполните

make install

В цели install (точно для меня install_unix) я читаю $(INSTALL_DATA) -m 755 libYap.a $(DESTDIR)$(LIBDIR), что означает, что ваш .aустановлен и должен быть готов к использованию компилятором, при условии, что вы знаете, где находится библиотека (и вы это знаете, см. выше и запомните параметры конфигурации)

2) Конечно, вы можете скопировать ее прямо туда, где выон нужен и используется «напрямую», но поскольку он «канонически» установлен make install, используйте его так же, как и любой другой «общесистемный» архив lib.

...