C++: obtenir Stimuler de travail; des questions sur le chemin d'inclusion et de liaison de la bibliothèque

J'ai essayé d'utiliser Boost.Générateur de jetons de la bibliothèque. Dans mon PROG.cpp, j'ai le texte suivant:

#include <boost/tokenizer.hpp>

Et mon Makefile a d'abord été quelque chose comme

CXX = g++-4.8
CXXFLAGS = ## some irrelevant flags
LDFLAGS = ## some irrelevant flags
SOURCES = PROG.cpp
OBJECTS = $(SOURCES:.cpp=.o)
TARGETS = PROG

$(TARGETS) : $(OBJECTS)
        $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

## other targets

Il ne compile pas, depuis boost/tokenizer.hpp ne peut pas être trouvé:

fatal error: boost/tokenizer.hpp: No such file or directory

Puis j'ai ajouté manuellement le boost chemin à CXXFLAGS:

-I/opt/local/include/

(qui est le chemin de MacPorts.)

Ensuite, j'ai essayé d'inclure le Tokenizer de la bibliothèque, mais dans /opt/local/lib/ j'ai libboost_atomic-mt.dylib, libboost_chrono-mt.dylib, etc., mais rien de tel que tokenizer. J'étais un peu perplexe à l'époque. Je suppose que n'aurait toujours pas de travail depuis la bibliothèque n'était pas lié à l'encontre. Étonnamment, le programme, en lien, et a fonctionné à la perfection.

Donc, je suis vraiment confus maintenant. Voici quelques questions:

(1) je n'ai pas de lien à l'encontre de stimuler de façon explicite, de sorte boost est considérée comme la norme de la bibliothèque par l'éditeur de liens?

(2) Si le boost est considérée comme la norme, pourquoi les en-têtes ne sont pas standard?

(3) Pourquoi il y a libboost_atomic-mt.dylib, libboost_chrono-mt.dylib, etc. mais pas tokenizer? Qui dynamique de la bibliothèque ne tokenizer appartient-il?

Je ne suis pas très familier avec g++ mécanisme de liaison; en parlant de coup de pouce, c'est mon tout premier programme avec boost. Donc j'apprécierais vraiment une explication détaillée. Merci à l'avance!

Pour la référence, c'est ce que j'ai extrait par gcc -print-search-dirs:

install: /usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/
programs: =/usr/gcc-4.8.0/libexec/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/libexec/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/libexec/gcc/x86_64-apple-darwin12.3.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/bin/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/bin/
libraries: =/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/lib/x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../../x86_64-apple-darwin12.3.0/lib/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../x86_64-apple-darwin12.3.0/4.8.0/:/usr/gcc-4.8.0/lib/gcc/x86_64-apple-darwin12.3.0/4.8.0/../../../:/lib/x86_64-apple-darwin12.3.0/4.8.0/:/lib/:/usr/lib/x86_64-apple-darwin12.3.0/4.8.0/:/usr/lib/

OriginalL'auteur 4ae1e1 | 2013-05-10