2010-07-14 20 views
3

Je recherche un moteur Prolog léger pouvant être intégré dans une application Obj-C sous Mac OSX.
En Java, il existe d'excellentes implémentations avec les caractéristiques dont j'ai besoin: déployabilité, légèreté, configurabilité dynamique, intégration avec Java et facilité d'interopérabilité. Pouvez-vous recommander quelque chose de similaire en C/C++?Incorporation d'un moteur Prolog dans des projets Obj-C


Après plusieurs recherches, j'ai trouvé YAProlog et la lecture here il semble qu'il peut être utilisé comme bibliothèque pour appeler d'autres programmes. Mais (questions stupides):

  1. Je suis inexpérimenté avec UNIX et je ne sais pas exactement comment produire libyap.a fichier avec les commandes du manuel YAP ...
  2. Puis-je copier puis libyap .a dans mon projet Xcode et l'utilise?

Répondre

3

GProlog prend en charge Mac OS X (Darwin) et il existe un programme d'installation pour Mac OS X Leopard. Et here vous pouvez lire comment call gprolog from C (lire aussi this). Puis au lieu d'utiliser gplc, vous pouvez utiliser gcc à condition que vous ajoutiez les bonnes options pour la liaison, ce qui pourrait être un peu "trickie" à trouver; de sorte que vous pouvez produire des fichiers d'objets avec gplc puis coller tout ensemble ...

A propos YAP:

1) Habituellement package avec autoconf sont compilés simplement à la « séquence » de commandes suivante

./configure 
make 

Un dernier make install devrait tout installer et doit être exécuté par un utilisateur ayant le droit de le faire. Le manuel suggère la création d'un répertoire ARCH (ARCH.?) Et fait tout à partir de là (donc, ../configure au lieu de ./configure).

Le script configure accepte généralement les options, jetez un oeil à eux. Vérifiez en particulier où sont LIBDIR et YAPLIBDIR.

Ainsi, une fois que vous avez la source tarball (la .tar.gz de la source), vous devez désarchiver il, une commande comme tar -xzf Yap-5.1.3.tar.gz fonctionne sur GNU/Linux et même tar devrait être également sous Mac OS X ...

Regardons ./configure --help et regardons si vous voyez une option intéressante que vous souhaitez utiliser avant de continuer.

Maintenant, nous allons suivre la suggestion de manuel (même si cela semble étrange pour moi ;-))

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

Vous attendez ... et ce répertoire est peuplé de evrything nécessaire pour l'étape suivante. Jetez un oeil à la création Makefile, vous voyez des lignes comme

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

Parmi les cibles du Makefile, je peux lire aussi libYap.a.Donc, essayez le make (je ne ferai pas cela pour vérifier ce qui peut mal tourner, aussi parce que je suis sur GNU/Linux et comment je peux résoudre les problèmes pourraient être différents), à la fin, vous devriez obtenir le libYap.a, et ainsi , « root » (administrateur) et ne

make install 

Dans la cible install (pour moi install_unix exactement) je lis $(INSTALL_DATA) -m 755 libYap.a $(DESTDIR)$(LIBDIR) ce qui signifie que votre .a est installé et devrait être prêt à être utilisé par un compilateur, à condition que vous savoir où est la lib (et vous le savez, voir ci-dessus et rappelez-vous les options du configure)

2) Bien sûr, vous pouvez le copier directement là où vous en avez besoin et l'utiliser "directement", mais comme il est "canoniquement" installé par le make install, utilisez-le comme vous le feriez pour n'importe quelle autre archive "system wide".