Конан не может найти определенный пакет для указанных настроек, опций и зависимостей - PullRequest
1 голос
/ 27 января 2020

Я работаю над небольшим C исполняемым проектом, используя 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 в секцию requires моего conanfile.txt файла, и я также создал профиль Conan для 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"

Поскольку я нуб, использующий Конан, я понятия не имею, как я могу решить эту проблему. Что нужно сделать, чтобы решить эту проблему, а также я могу это исправить самостоятельно или мне нужна помощь автора пакета?

Я нашел описание ошибки Missing prebuilt package в https://docs.conan.io/en/latest/faq/troubleshooting.html#error -missing-prebuilt-package , но это мало помогает.

1 Ответ

2 голосов
/ 27 января 2020

, поэтому я добавил пакет OpenSSL / 1.1. 1a@conan/stable к обязательному

То есть пакет устарел, вы можете проверить его в репозитории Conan Community, Вместо этого вы должны попробовать openssl/1.1.1a@, что поддерживается новым индексом центра Конана .

conan install openssl/1.1.1d@

Где находится пространство имен? Он был удален, посмотрите на больше информации о рецептах .

Поскольку я новичок, использующий Конана, я понятия не имею, как я могу решить эту проблему. Что нужно сделать, чтобы решить эту проблему, а также я могу это исправить самостоятельно или мне нужна помощь автора пакета?

Как рекомендует FAQ , Вы должны собрать его самостоятельно, выполнив команду, предложенную в сообщении об ошибке:

conan install openssl/1.1.1a@ --build zlib

Но я уверен, что этого будет недостаточно, вам нужно будет также собрать OpenSSL. Итак, лучший подход в вашей ситуации:

conan install openssl/1.1.1a@ --build missing

Теперь, Конан будет собирать из источников все, что не было предварительно построено на стороне сервера.

Подводя итог, это не ошибка, как будто что-то сломано.

Когда вы запросили OpenSSL 1.1.1a, Конан нашел рецепт на Центр Конана , который объясняет, как построить OpenSSL, однако это не так. пакет, следуя вашим настройкам и опциям.

Ну, MingW не используется в Conan Center Index, потому что нет достаточного спроса, все поддерживаемые платформы и конфигурации перечислены в вики , Но этот специфицированный c рецепт должен поддерживать MingW, так как, когда он был частью сообщества Conan, MingW присутствовал в списках пакетов для сборки.

Я бы сказал, вы можете использовать вместо него 1.1.1d, что новее и безопаснее, чем 1.1.1a.

...