【问题标题】:Conan cannot find a certain package for the specified settings, options and dependencies柯南找不到指定设置、选项和依赖项的某个包
【发布时间】:2020-01-27 19:37:30
【问题描述】:

我正在使用 Jetbrains CLion 2019.3、MinGW 8.1 以及 Conan C/C++ 包管理器 1.21.1。我正在刷新我对 C 的了解,并想了解像柯南这样的新工具。我的主要开发环境是Windows,但是这个项目是打算跨平台的;我也希望能够在 Linux/Unix 上构建和运行该应用程序。

由于我的应用程序需要使用HMACSHA1 计算签名,所以我想使用 OpenSSL 库,因此我将OpenSSL/1.1.1a@conan/stable 包添加到了我的conanfile.txt 文件的requires 部分,并且我还创建了一个柯南MinGW 的配置文件具有以下选项:

toolchain=$MINGW64_PATH
target_host=x86_64-w64-mingw32
cc_compiler=gcc
cxx_compiler=g++

[env]
CONAN_CMAKE_FIND_ROOT_PATH=$toolchain
CHOST=$target_host
AR=$target_host-ar
AS=$target_host-as
RANLIB=$target_host-ranlib
CC=$target_host-$cc_compiler
CXX=$target_host-$cxx_compiler
STRIP=$target_host-strip
RC=$target_host-windres

[settings]
os_build=Windows
arch_build=x86_64

# We are cross-building to Windows
os=Windows
arch=x86_64
compiler=gcc

# Adjust to the gcc version of your MinGW package
compiler.version=8.1
compiler.libcxx=libstdc++11
build_type=Release

MINGW64_PATH 指向我的 MinGW 安装文件夹。

在运行conan install 时,它会抱怨缺少一个不存在的包(显然是 OpenSSL 的依赖包):

zlib/1.2.11@conan/stable: WARN: Can't find a 'zlib/1.2.11@conan/stable' package for the specified settings, options and dependencies:
- Settings: arch=x86_64, build_type=Release, compiler=gcc, compiler.version=8.1, os=Windows
- Options: minizip=False, shared=False
- Dependencies: 
- Package ID: eb34f13b437ddfd63abb1f884c4b8886c48b74cd

ERROR: Missing prebuilt package for 'zlib/1.2.11@conan/stable'
Try to build it from sources with "--build zlib"
Or read "http://docs.conan.io/en/latest/faq/troubleshooting.html#error-missing-prebuilt-package"

由于我是使用柯南的菜鸟,我不知道如何解决这个问题。需要做什么来解决这个问题,我也可以自己解决这个问题,还是需要包作者的帮助?

我在https://docs.conan.io/en/latest/faq/troubleshooting.html#error-missing-prebuilt-package 找到了关于Missing prebuilt package 错误的描述,但它没有多大帮助。

【问题讨论】:

    标签: c gcc mingw cross-platform conan


    【解决方案1】:

    所以我将 OpenSSL/1.1.1a@conan/stable 包添加到需求中

    该软件包已过时,您可以在Conan Community 存储库中查看它。您应该改用openssl/1.1.1a@,它由新的Conan Center Index 维护。

    conan install openssl/1.1.1d@
    

    命名空间在哪里?已下架,请关注more information about recipes

    由于我是使用柯南的菜鸟,我不知道如何解决这个问题。需要做什么来解决这个问题,我也可以自己解决这个问题,还是需要包作者的帮助?

    按照FAQ 的建议,您应该自己构建,运行错误消息提出的命令:

    conan install openssl/1.1.1a@ --build zlib
    

    但我确信这还不够,您还需要构建 OpenSSL。因此,在您的情况下,最好的方法是:

    conan install openssl/1.1.1a@ --build missing
    

    现在,柯南将从源代码构建任何未在服务器端预先构建的东西。

    总而言之,这不是错误,就像某些东西坏了一样。

    当您询问 OpenSSL 1.1.1a 时,柯南在 Conan Center 上找到了配方,其中解释了如何构建 OpenSSL,但是按照您的设置和选项,它没有找到您的预构建包。

    好吧,柯南中心索引中没有使用MingW,因为没有足够的需求,所有supported platforms and configurations都在Wiki中列出。但是这个特定的配方应该支持 MingW,因为当它是柯南社区的一部分时,MingW 就出现在用于构建的包列表中。

    我会说,您可以改用 1.1.1d,它比 1.1.1a 更新且更安全。

    【讨论】:

    • 我已经根据这个添加了 conan-community 遥控器:docs.conan.io/en/latest/uploading_packages/remotes.html 并且还在bintray.com/conan/conan-center/openssl%3A_/1.1.1d%3A_ 找到了 1.1.1d-package,但我无法安装它。柯南客户端失败,错误为ERROR: Unable to find 'OpenSSL/1.1.1d' in remotes。我错过了什么?
    • 或者您忘记添加@,或者是因为您使用的是CamelCase。如前所述,它是小写字母并使用@ 作为后缀。
    • 好点在于外壳;我尝试了conan install openssl/1.1.1d@ -r conan-community,但以ERROR: Requested 'openssl/1.1.1d' but found case incompatible 'OpenSSL' Case insensitive filesystem can't manage this 失败。是不是因为弃用的包还在缓存中?
    • 好的;使用conan remove OpenSSL/* 从缓存中删除OpenSSL 包,然后通过conan install openssl/1.1.1d@_/_ 安装它就可以了,而conan install openssl/1.1.1d@ 不起作用。
    • 因为 openssl/1.1.1d@ 不是柯南社区的一部分,所以在访问链接bintray.com/conan/conan-center/openssl%3A_/1.1.1d%3A_ 时,您会看到一个名为“Set me Up”的按钮,其中包含打包所需的所有步骤.所有没有命名空间(用户/频道)的包都是 conan-center remote 的一部分。正如您在文档中阅读的那样,conan-center 默认情况下在您的远程列表中定义。总结一下,运行conan install openssl/1.1.1d@ -r conan-center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多