Как “найти” boost.program_options?

217
22 октября 2017, 22:19

В своем проекте на C++ применяю boost.program_options. В ручную настроенный проект из MSVS 2013 и 2017 отлично компилируется.

В данный момент настраиваю проект для компиляции на Windows 10. В переменную среды BOOST_ROOT указал значение k:\projects\cpp-workspace\boost-libraries\.

Вот как я компилировал Boost, пример для одной платформы и debug-конфигурации:

.\b2.exe --without-wave ^
    --without-python ^
    --without-graph_parallel ^
    --without-graph ^
    stage --stagedir=stage32 ^
    toolset=msvc ^
    variant=debug ^
    link=static ^
    threading=multi ^
    runtime-link=static

Появились папки:

  • k:\projects\cpp-workspace\boost-libraries\stage32\lib\
  • k:\projects\cpp-workspace\boost-libraries\stage64\lib\

В CMake-скрипте написал:

find_package(Boost REQUIRED program_options)
message(status "** Boost_INCLUDE_DIR: ${Boost_INCLUDE_DIR}")
message(status "** ENV BOOST_LIBRARYDIR: $ENV{BOOST_LIBRARYDIR}")
message(status "** Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}")
message(status "** Boost_LIBRARIES: ${Boost_LIBRARIES}")

Получаю:

CMake Error at C:/Program Files/CMake/share/cmake-3.9/Modules/FindBoost.cmake:1902 (message):
  Unable to find the requested Boost libraries.
  Boost version: 1.60.0
  Boost include path: K:/projects/cpp-workspace/boost-libraries
  Could not find the following Boost libraries:
          boost_program_options
  No Boost libraries were found.  You may need to set BOOST_LIBRARYDIR to the
  directory containing Boost libraries or BOOST_ROOT to the location of
  Boost.
Call Stack (most recent call first):
  readpe/CMakeLists.txt:31 (find_package)

status** Boost_INCLUDE_DIR: K:/projects/cpp-workspace/boost-libraries
status** ENV BOOST_LIBRARYDIR:
status** Boost_LIBRARY_DIRS:
status** Boost_LIBRARIES:
-- Configuring incomplete, errors occurred!
See also "K:/projects/cpp-workspace/readpe/build/CMakeFiles/CMakeOutput.log".

Этот Boost компонент комплируем, а не Header-Only вариант. Об этом говорит наличие файла k:\projects\cpp-workspace\boost-libraries\stage32\lib\libboost_program_options-vc120-mt-s-1_60.lib.

Что мне нужно сделать, чтобы библиотеки нашлись? Неужели явным образом назначать в переменную ${Boost_LIBRARIES} ?

READ ALSO
Разделение string на элементы массива через нужный символ

Разделение string на элементы массива через нужный символ

Подскажите, а способа как использовать <vector> для разделения нужной мне строки на подстроки, которые будут заноситься в массив, нет?

262
C++ - Неверный результат работы программы [требует правки]

C++ - Неверный результат работы программы [требует правки]

Решение задачи проходит только на 67,20 из 100И я совершенно не могу понять в чем проблема, перепробовал все что знаю, иногда выдает неправильный...

417
Простое слияние сортировка

Простое слияние сортировка

Не могу понять где теряет элементы файла после сортировки

271
Вхождение числа в массив

Вхождение числа в массив

Помогите исправить ошибку в функции

205