【问题标题】:What configurations do I need in CMake so that I can build the project?我需要在 CMake 中进行哪些配置才能构建项目?
【发布时间】: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


【解决方案1】:

原来我需要为 OpenSSL、ZLib、Boost、curl 设置一些系统变量。对于 Zlib,只需执行相同的过程。 drescherjm 是一个巨大的帮助。所以谢谢!

教程:

OpenSSL: https://www.youtube.com/watch?v=3I7eL2Mm6Ps&index=34&t=0s&list=PLcmZ3Jkh7taY1ensPUAJ4VfMEicDcihhg

卷曲: How do I install and use curl on Windows?

Setting up curl library path in cmake

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 2019-06-12
相关资源
最近更新 更多