PocoCryptod.lib 和 PocoNetSSLd.lib 库在 cmake 期间未构建

问题描述 投票:0回答:1

我正在尝试设置 poco 的 HTTPSClientSession 方法以在 https 链接上运行 API Get 请求。为此,我需要安装完整版的 POCO,包括 openSSL、Crypto 和 NetSSL_OPENSSL 组件。我按照 POCO 文档中的说明进行了如下操作。

  1. 克隆 openssl poco 存储库($ git clone https://github.com/pocoproject/openssl)...我在目录 [poco-base]/openssl

    中设置了 openssl 安装
  2. 运行 $ cmake -H/path/to/poco -B/path/to/poco-build $ cmake --build /path/to/poco-build

我做的一切都很好,我很确定我的代码是正确的,但是当我编译时我得到 PocoCryptod.lib 和 PocoNetSSLd.lib 文件丢失错误 - 链接器找不到它们。这是因为我从未将它们包含在我的 vs 项目中,因为 cmake 从未制作过它们。我追溯到那么远。

当我运行 cmake -H/path/to/poco -B/path/to/poco-build 时,出现以下错误: --Could not find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR(缺少:OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)

我在哪里设置 OPENSSL_ROOT_DIR?我知道我需要一些特殊的东西来安装加密库和 NetSSL_OpenSSL 库,但我对那是什么感到困惑。

我在文件搜索中使用了 find,发现 OPENSSL_ROOT_DIR 在两个文件中

[Poco-Base]/cmake/UseEmbeddedopenSSl.cmake [Poco-Base]/cmake/v33/FindOpenSSL.cmake

我认为问题出在某个地方。我的倾向是它在 FindOpenSSL.cmake 文件中,但我很困惑,因为我不明白 set OPENSSL_ROOT_DIR 是如何写的。

这是它在文件中的样子:

``

# Hints
# ^^^^^
#
# Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
# Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
# Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.


if (WIN32)
  # http://www.slproweb.com/products/Win32OpenSSL.html
  set(_OPENSSL_ROOT_HINTS
    ${OPENSSL_ROOT_DIR}
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-    
       bit)_is1;Inno Setup: App Path]"
    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-
       bit)_is1;Inno Setup: App Path]"
    ENV OPENSSL_ROOT_DIR
   )
  file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
  set(_OPENSSL_ROOT_PATHS
    "${_programfiles}/OpenSSL"
    "${_programfiles}/OpenSSL-Win32"
    "${_programfiles}/OpenSSL-Win64"
    "C:/OpenSSL/"
    "C:/OpenSSL-Win32/"
    "C:/OpenSSL-Win64/"
     )
     unset(_programfiles)
  else ()
  set(_OPENSSL_ROOT_HINTS
    ${OPENSSL_ROOT_DIR}
    ENV OPENSSL_ROOT_DIR
     )
 endif ()
  `
  ``

我想我需要在这里进行更改,但我很困惑。有帮助吗?

c++ poco poco-libraries
1个回答
0
投票

我终于明白了。转到 Windows 环境变量并创建一个新变量 OPENSSL_ROOT_DIR 到 [poco-unzipped-files-location]\openssl uild\win64 in\debug。同时将包含目录移动到此位置。缺少头文件的问题是我在之前的尝试中删除了它们。这对你来说应该不是问题。

© www.soinside.com 2019 - 2024. All rights reserved.