Я пытаюсь понять, как работает Конан, и изучаю документы Конана.
Итак, что я получил до сих пор, так это то, что со стороны клиента клиент пишет conanfile.txt
файл, содержащий раздел [requirements]
, в котором указаны все требования для проекта.
Когда клиент запускается conan install
- Конан считывает настройки клиента из ~/.conan/profiles/default
(или другой профиль также может быть указан через интерфейс командной строки Conan) и загружает соответствующий двоичный пакет с пульта дистанционного управления (при условии, что его нет в локальный кеш уже), соответствующий профилю (например, ОС, архитектура и т. д.).
Мое замешательство начинается со стороны продюсера. Вот что я получил до сих пор: чтобы создать пакет, вам нужно написать conanfile.py
, который называется рецептом. Этот рецепт описывает сборку двоичных пакетов.
В документах говорится, что conan create
эквивалентен:
$ conan export . demo/testing
$ conan install hello/0.1@demo/testing --build=hello
# package is created now, use test to test it
$ conan test test_package hello/0.1@demo/testing
Некоторые моменты я не понимаю:
- Почему клиент скачивает рецепт? Разве рецепт нужен не только для создания пакета?
- Почему профиль клиента содержит бит
compiler
? Я могу понять, например,os
иarch
, поскольку клиентский компьютер X86-Windows не может обрабатывать пакет Linux или пакет ARM, но почему компилятор является частью конфигурации, указанной клиентом? - Рецепт содержит строку
settings = "os", "compiler", "build_type", "arch"
В документах говорится:
Поле настроек определяет конфигурацию различных двоичных пакетов. В этом примере мы определили, что любое изменение ОС, компилятора, архитектуры или типа сборки приведет к созданию другого двоичного пакета. Обратите внимание, что Конан генерирует разные двоичные пакеты для разной представленной конфигурации (в данном случае настроек) для одного и того же рецепта.
где конкретно указано, какие конфигурации следует использовать в процессе создания пакета?
conan install
используется как для создания пакета, так и для использования пакета?