I want to build this repository: https://github.com/reo7sp/tgbot-cpp.
It is an API for managing Telegram bots. The needed dependencies are openssl, zlib, boost. Curl is optional.
How I installed libraries and cmake
Boost was compiled with:
bootstrap.bat
.b2
and (since I do not know the difference; one compiles under boost/stage/lib; the second under 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
I added the required paths in system variables under path.
When trying to build with cmake I get the following error:
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:ProgrammeBoostboost_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".
It seems to me that everything except of Boost works. I know that there are several users with this problem like:
CMake with Boost could not find static libraries
CMake with Boost library Windows 10 Library not found correctly
So, I did the suggested procedures:
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()
and
set(BOOST_LIBRARYDIR D:/Programme/Boost/boost_1_69_0/lib)
Nothing worked. I have absolutely no clue what to do, for days desperately trying to figure out what to do without success. Please, help me.
2
Answers
According to your comments, the location for Boost is
D:/Programme/Boost/boost_1_69_0/stage/lib
, but you set it toD:/Programme/Boost/boost_1_69_0/lib
.Anyway, Boost can be found if you set (usually manually, in the CMake UI rather than in the CMakeLists.txt file)
BOOST_ROOT
toD:/Programme/Boost/boost_1_69_0
withFIND_PACKAGE(Boost)
.This will in turn set all the
Boost_*
variables that you need to use.Use the same command to build and install Boost.
In windows, Boost creates another sub directory under include. It should be something like this.
Move all files in
D:/Programme/Boost/boost_1_69_0/include/boost-1_69
toD:/Programme/Boost/boost_1_69_0/include/
(Move the contents up to one directory)
Now set the
BOOST_ROOT
in CMake project toD:/Programme/Boost/boost_1_69_0
.It should work now.