2010-04-28 6 views
2

Je viens d'installer boost 1.42.0 depuis macports en utilisant sudo port install boost.Makefile ne trouve pas de bibliothèques boost installées par macports

Tout a bien fonctionné. Maintenant, j'ai un projet que j'essaye de construire en utilisant un makefile. Tout se construit bien jusqu'à ce qu'il arrive dans le fichier qui a besoin de la bibliothèque boost.

Il dit:
src/graph.h: 20: 42: Erreur: boost/graphique/adjacency_list.hpp: Aucun fichier ou répertoire

Ce fichier est en fait situé à deux endroits:
/opt/local/include/boost/graphique/adjacency_list.hpp
et
/opt/local/var/macports/software/boost/1.42.0_0/opt/local/include/boost/graph/adjacency_list.hpp

Dans le fichier src/graph.h où il recherche boost/graph/adjacentency_list.hpp, l'instruction include est ici:
#include<boost/graph/adjacency_list.hpp>

Comment puis-je faire ce travail?

+0

Le deuxième chemin semble incorrect. –

Répondre

13

Vous devez indiquer au compilateur le répertoire de base où Boost est installé. Vous pouvez le faire avec l'option de ligne de commande -I du compilateur:

g++ -I/opt/local/include ... 
+1

Est-ce que je ne peux pas faire en sorte que tous les futurs projets qui utilisent boost recherchent/boivent automatiquement dans ce chemin? Dois-je le faire à chaque projet? –

+2

Ça a marché, mais je suis toujours curieux. P.S. Pour tous ceux qui veulent savoir comment construire SLAM6D sur un mac: Ouvrez makefile.options (après avoir été renommé depuis makefile.options.macosx) et ajoutez cette ligne en bas avec les autres CFLAGS CFLAGS + = -I/opt/local/include –

+3

@pinnacler - vous pouvez faire 'ln -s/opt/local/include/boost/usr/include' –

2

Ajoutez l'un de ces chemins à votre chemin d'inclusion.

Vous pouvez inclure la version en utilisant ce comprennent:

#include <boost/version.hpp> 

qui définit:

#define BOOST_VERSION 104200 
#define BOOST_LIB_VERSION "1_42" 

Utilisez cette option pour vérifier si votre compilateur utilise la version que vous voulez utiliser.

Questions connexes