Встраивание движка Пролога в проекты Obj-C
Я ищу легкий движок Пролога, который будет встроен в приложение Obj-C под Mac OSX.
в Java есть несколько превосходных реализаций с характеристиками, которые мне нужны: развертываемость, легкость, динамическая конфигурируемость, интеграция с Java и простота взаимодействия.
Можете ли вы порекомендовать что-то подобное в C/C++?
После нескольких поисков я нашел YAProlog и чтение здесь кажется, он может быть использован в качестве библиотеки для вызова из других программ. Но (глупые вопросы):
- у меня не было опыта с Unix, и я не знаю точно, как производить libyap.файл с этими командами руководства YAP...
- могу ли я тогда скопировать libyap.а в моем проекте Xcode и использовать его?
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
В цели
2) Конечно, вы можете скопировать его непосредственно туда, где он вам нужен, и использовать его "непосредственно", но поскольку он "канонически" установленinstall
(именноinstall_unix
для меня) я читаю$(INSTALL_DATA) -m 755 libYap.a $(DESTDIR)$(LIBDIR)
, что означает, что ваш.a
установлен и должен быть готов к использованию компилятором, при условии, что вы знайте, где находится lib (и вы это знаете, смотрите выше и помните параметры configure)make install
, используйте его так, как вы использовали бы любой другой "общесистемный" lib-архив.