Не удалось найти следующие библиотеки Boost: boost_system - PullRequest
0 голосов
/ 26 января 2019

Я хочу создать этот репозиторий: https://github.com/reo7sp/tgbot-cpp.

Это API для управления ботами Telegram.Необходимые зависимости: openssl, zlib, boost.Curl не является обязательным.

Как я установил библиотеки и cmake

Boost был скомпилирован с:

bootstrap.bat
.\b2

и (так как я не знаюразница: один компилируется в boost / stage / lib; второй в boost / lib)

bjam install --prefix=D:/Programme/Boost/boost_1_69_0 --with-system --with-date_time --with-random link=static runtime-link=shared threading=multi

Я добавил необходимые пути в системные переменные в path.

переменные окружения

Path

При попытке собрать с помощью cmake я получаю следующую ошибку:

The C compiler identification is MSVC 19.16.27026.1
The CXX compiler identification is MSVC 19.16.27026.1
Check for working C compiler: D:/Programme (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
Check for working C compiler: D:/Programme (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: D:/Programme (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe
Check for working CXX compiler: D:/Programme (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Looking for pthread.h
Looking for pthread.h - not found
Found Threads: TRUE  
Found ZLIB: D:/Programme (x86)/GnuWin32/lib/zlib.lib (found version "1.2.3") 
Found OpenSSL: optimized;D:/Programme/OpenSSL-Win64/lib/VC/libcrypto64MD.lib;debug;D:/Programme/OpenSSL-Win64/lib/VC/libcrypto64MDd.lib (found version "1.1.0j")  
Could NOT find CURL (missing: CURL_LIBRARY) (found version "7.63.0")
CMake Warning (dev) at CMakeLists.txt:62 (find_package):
  Policy CMP0074 is not set: find_package uses <PackageName>_ROOT variables.
  Run "cmake --help-policy CMP0074" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  Environment variable Boost_ROOT is set to:

    D:\Programme\Boost\boost_1_69_0

  For compatibility, CMake is ignoring the variable.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at D:/Programme/CMake/share/cmake-3.13/Modules/FindBoost.cmake:2100 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.69.0

  Boost include path: D:/Programme/Boost/boost_1_69_0/include/boost-1_69

  Could not find the following Boost libraries:

          boost_system

  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):
  CMakeLists.txt:62 (find_package)


CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CURL_LIBRARY
    linked by target "TgBot" in directory G:/Programmieren (C++)/Bibliotheken/tgbot-cpp-master

Configuring incomplete, errors occurred!
See also "G:/Programmieren (C++)/Bibliotheken/tgbot-cpp-master/BUILD/CMakeFiles/CMakeOutput.log".
See also "G:/Programmieren (C++)/Bibliotheken/tgbot-cpp-master/BUILD/CMakeFiles/CMakeError.log".

Мне кажется, что все, кромеBoost работает.Я знаю, что есть несколько пользователей с этой проблемой, как:

Cmake не находит Boost

CMake с Boost не может найти статические библиотеки

CMake с библиотекой Boost Библиотека Windows 10 не найдена правильно

Итак, я выполнил предложенные процедуры:

SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "D:/Programme/Boost/boost_1_69_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "D:/Programme/Boost/boost_1_69_0/lib")

FIND_PACKAGE(Boost)
IF (Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()

и

set(BOOST_LIBRARYDIR D:/Programme/Boost/boost_1_69_0/lib)

Ничего не получалось.Я понятия не имею, что делать, в течение нескольких дней отчаянно пытаясь понять, что делать без успеха.Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Используйте ту же команду для сборки и установки Boost.

bjam install --prefix=D:/Programme/Boost/boost_1_69_0 --with-system --with-date_time --with-random link=static runtime-link=shared threading=multi

В Windows Boost создает другой подкаталог в разделе include.Должно быть что-то вроде этого.

D:/Programme/Boost/boost_1_69_0/include/boost-1_69

Переместить все файлы в D:/Programme/Boost/boost_1_69_0/include/boost-1_69 в D:/Programme/Boost/boost_1_69_0/include/

(переместить содержимое в один каталог)

Теперь установленоBOOST_ROOT в проекте CMake для D:/Programme/Boost/boost_1_69_0.

Теперь должно работать.

0 голосов
/ 26 января 2019

Согласно вашим комментариям, местоположение для Boost равно D:/Programme/Boost/boost_1_69_0/stage/lib, но вы установили его на D:/Programme/Boost/boost_1_69_0/lib.

В любом случае, Boost можно найти, если установить (обычно вручную, в пользовательском интерфейсе CMake, а не в файле CMakeLists.txt) BOOST_ROOT до D:/Programme/Boost/boost_1_69_0 с FIND_PACKAGE(Boost).

Это в свою очередь установит все переменные Boost_*, которые вам нужно использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...