2014-11-05 2 views
8

Я пытаюсь выяснить, какие компоненты для Find в CMakeList.txt для boost библиотек.Как определить имена библиотеки Boost для CMake

Я смотрел этот каталог /usr/local/include/boost. И я случайно выбираю некоторые из папок и пытаюсь использовать FIND_PACKAGE. Все эти работы хорошо работают.

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

Особый вопрос, который я использую, - property_tree. Он не работает и выдает следующее сообщение об ошибке:

CMake Ошибка при /Applications/CMake.app/Contents/share/cmake-3.1/Modules/FindBoost.cmake:1182 (сообщение):

Не удалось найти запрошенные библиотеки Boost. версия

форсиро- 1.55.0

подталкивания включают путь:/USR/местные/включают

Не удалось найти следующие статические библиотеки Форсирование:

boost_property_tree 

Может кто-нибудь объяснить, как или где я могу найти правильные имена библиотек для повышения?

ответ

12

COMPONENTS часть FIND_PACKAGE выполняет поиск только скомпилированных библиотек. Он не может проверить библиотеки только для заголовков, которые составляют основную часть Boost. Есть только несколько библиотек, которые требуют связывания (в основном тех, которые выполняют специфичные для платформы вещи).

Из ваших примеров, только thread, signals (в отличие от signals2, который является заголовком только), system и program_options необходимо строить заранее, а затем компонуется с вашей программой. В остальном достаточно включить соответствующие файлы заголовков.

Таким образом, достаточно добавить ${Boost_INCLUDE_DIRS} во включенные каталоги вашей цели.

См. Здесь список библиотек этих библиотек Which boost libraries are header-only?

Смежные вопросы