我正在使用Jetbrains CLion 2019.3 ,MinGW 8.1 和柯南C / C ++软件包管理器 1.21.1 <来开发一个小型C可执行项目。 / em>。我正在刷新有关C的知识,并想学习诸如Conan之类的新工具。我的主要开发环境是Windows,但是该项目旨在跨平台。我也希望能够在Linux / Unix上构建和运行该应用程序。
由于我的应用程序需要使用HMACSHA1
计算签名,因此我想使用OpenSSL库,因此我在OpenSSL/1.1.1a@conan/stable
的{{1}}部分中添加了requires
包文件,并且我还为conanfile.txt
创建了柯南配置文件,该配置文件具有以下选项:
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
指向我的MinGW安装文件夹。
运行MINGW64_PATH
时,它会抱怨缺少一个不存在的程序包(显然是OpenSSL的依赖程序包):
conan install
由于我是使用柯南的菜鸟,所以我不知道如何解决此问题。要解决此问题需要做什么,我也可以自己解决,还是需要软件包作者的帮助?
我在https://docs.conan.io/en/latest/faq/troubleshooting.html#error-missing-prebuilt-package处发现了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"
错误的描述,但没有太大帮助。
答案 0 :(得分:4)
所以我将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,因为当它成为Conan社区的一部分时,MingW就会出现在要制作的包装清单中。
我会说,您可以改用1.1.1d,它比1.1.1a更新和安全。