Встраивание механизма Prolog в проекты Obj-C

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


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

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

person user370773    schedule 14.07.2010    source источник


Ответы (1)


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

О ЯП:

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

./configure
make

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

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

Итак, когда у вас есть tar-архив с исходным кодом (.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

Среди целей Makefile я также могу прочитать 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.

person ShinTakezou    schedule 14.07.2010