【发布时间】:2019-06-19 15:25:15
【问题描述】:
我要构建以下项目:https://github.com/reo7sp/tgbot-cpp
我收到这些错误:https://imgur.com/S9kgWyv
Makefile 第 1 部分:https://imgur.com/O222bJR
Makefile 第 2 部分:https://imgur.com/i68QLdC
现在,我认为我需要 zlib、openssl 和 boost。卷曲似乎是可选的。
什么是“线程”?
...LIBRARY_DEBUG 和 ...LIBRARY_RELEASE 有什么区别?
在 gui 中 LIB 和 SSL 是什么意思? makefile 中没有提到这些“库”?
我已经绝望了好几天了。请帮帮我。
错误:
CMake Error at D:/Programme/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found
version "1.1.0j")
Call Stack (most recent call first):
D:/Programme/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
D:/Programme/CMake/share/cmake-3.13/Modules/FindOpenSSL.cmake:412 (find_package_handle_standard_args)
CMakeLists.txt:47 (find_package)
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.4)
project(TgBot)
if (${CONAN_EXPORTED})
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
endif()
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
# options
option(ENABLE_TESTS "Set to ON to enable building of tests" OFF)
option(BUILD_SHARED_LIBS "Build tgbot-cpp shared/static library." OFF)
# sources
if(WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # Do not activate all warnings in VS (too much output for Appveyor)
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
endif()
include_directories(include)
set(SRC_LIST
src/Api.cpp
src/EventHandler.cpp
src/TgException.cpp
src/TgTypeParser.cpp
src/net/BoostHttpOnlySslClient.cpp
src/net/CurlHttpClient.cpp
src/net/HttpParser.cpp
src/net/TgLongPoll.cpp
src/net/Url.cpp
src/tools/FileTools.cpp
src/tools/StringTools.cpp
src/types/InlineQueryResult.cpp
src/types/InputFile.cpp
)
# libs
## threads
find_package(Threads REQUIRED)
# zlib
find_package(ZLIB REQUIRED)
## openssl
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
## curl
find_package(CURL)
if (CURL_FOUND)
include_directories(${CURL_INCLUDE_DIRS})
add_definitions(-DHAVE_CURL)
endif()
## boost
set(Boost_USE_MULTITHREADED ON)
if (ENABLE_TESTS)
find_package(Boost 1.59.0 COMPONENTS system unit_test_framework REQUIRED)
else()
find_package(Boost 1.59.0 COMPONENTS system REQUIRED)
endif()
include_directories(${Boost_INCLUDE_DIR})
set(LIB_LIST
${CMAKE_THREAD_LIBS_INIT}
${ZLIB_LIBRARIES}
${OPENSSL_LIBRARIES}
${Boost_LIBRARIES}
${CURL_LIBRARIES}
)
# building project
add_library(${PROJECT_NAME} ${SRC_LIST})
target_include_directories(${PROJECT_NAME} PUBLIC include)
target_link_libraries(${PROJECT_NAME} ${LIB_LIST})
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(DIRECTORY include/ DESTINATION include)
# tests
if (ENABLE_TESTS)
message(STATUS "Building of tests is enabled")
enable_testing()
add_subdirectory(test)
endif()
【问题讨论】:
-
错误信息表明您的 openssl 存在问题。按照错误消息的建议进行操作。
-
...LIBRARY_DEBUG 和 ...LIBRARY_RELEASE 有什么区别? 在 Visual Studio 中,调试配置与发布配置不兼容(至少对于 C++)所以在大多数情况下,您需要单独的二进制文件用于调试配置和发布配置。
-
我知道。 “G:\Programmieren (C++)\Bibliotheken\OpenSSL-Win64\include” 是否正确?我需要把这个放在哪里?在“未分组条目”>“OPENSSL_INCLUDE_DIR”或“SSL”>...
-
"G:\Programmieren (C++)\Bibliotheken\OpenSSL-Win64\include" 对吗?验证..
-
欢迎来到 Stack Overflow!在这里,我们希望代码和错误消息以文本的形式出现在问题帖子中。请将代码和错误消息直接粘贴到问题帖子中。粘贴后,您可以使用
Ctrl+K或{}按钮对其进行格式化。
标签: c++ cmake configuration