Встраивание движка Пролога в проекты Obj-C


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


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

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

1 ответ:

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

О ЯП:

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

./configure
make

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

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

Итак, как только у вас есть исходный тарбол (.tar.gz source), вы должны деархивировать его, команда типа 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 установлен и должен быть готов к использованию компилятором, при условии, что вы знайте, где находится lib (и вы это знаете, смотрите выше и помните параметры configure)

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