2014-11-05 20 views
8

Ich versuche herauszufinden, welche Komponenten zu Find in CMakeList.txt für boost Bibliotheken.So ermitteln Sie die Boost-Bibliotheksnamen für CMake

Ich schaute auf dieses Verzeichnis /usr/local/include/boost. Und ich wähle zufällig einige der Ordner aus und versuche, FIND_PACKAGE zu verwenden. Dies alles funktioniert gut.

FIND_PACKAGE(Boost COMPONENTS thread system log log_setup 
        signals graph memory_order program_options REQUIRED) 

Die besondere eine, die ich verwende ist property_tree. Es funktioniert nicht und erzeugt folgende Fehlermeldung:

CMake Fehler bei /Applications/CMake.app/Contents/share/cmake-3.1/Modules/FindBoost.cmake:1182 (Nachricht):

Die angeforderten Boost-Bibliotheken konnten nicht gefunden werden.

Boost-Version: 1.55.0

Boost-Include-Pfad:/usr/local/include

Könnte die folgenden statischen Boost-Bibliotheken nicht finden:

boost_property_tree 

Könnte jemand erklären, wie oder wo finde ich die richtigen Bibliotheksnamen für Boost?

Antwort

12

Der COMPONENTS-Teil von FIND_PACKAGE sucht nur nach kompilierten Bibliotheken. Es ist nicht in der Lage, nach den Header-Only-Bibliotheken zu suchen, die einen Hauptteil von Boost ausmachen. Es gibt nur ein paar Bibliotheken, die verlinkt werden müssen (meistens diejenigen, die plattformspezifische Dinge ausführen).

Von Ihren Beispielen nur thread, signals (im Gegensatz zu signals2 dem Kopf nur ist), system und program_options müssen vorher und dann mit Ihrem Programm verknüpft werden bauen. Im Übrigen genügt es, die relevanten Header-Dateien einzubinden.

Daher ist es ausreichend, ${Boost_INCLUDE_DIRS} zu den Include-Verzeichnissen Ihres Ziels hinzuzufügen.

Hier finden Sie eine Liste der Bibliotheken dieser Bibliotheken Which boost libraries are header-only?

Verwandte Themen