Путаница в архитектуре Конана

Я пытаюсь понять, как работает Конан, и изучаю документы Конана.
Итак, что я получил до сих пор, так это то, что со стороны клиента клиент пишет 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

Некоторые моменты я не понимаю:

  1. Почему клиент скачивает рецепт? Разве рецепт нужен не только для создания пакета?
  2. Почему профиль клиента содержит бит compiler? Я могу понять, например, os и arch, поскольку клиентский компьютер X86-Windows не может обрабатывать пакет Linux или пакет ARM, но почему компилятор является частью конфигурации, указанной клиентом?
  3. Рецепт содержит строку settings = "os", "compiler", "build_type", "arch" В документах говорится:

Поле настроек определяет конфигурацию различных двоичных пакетов. В этом примере мы определили, что любое изменение ОС, компилятора, архитектуры или типа сборки приведет к созданию другого двоичного пакета. Обратите внимание, что Конан генерирует разные двоичные пакеты для разной представленной конфигурации (в данном случае настроек) для одного и того же рецепта.

где конкретно указано, какие конфигурации следует использовать в процессе создания пакета?

  1. conan install используется как для создания пакета, так и для использования пакета?

person YoavKlein    schedule 11.03.2021    source источник


Ответы (1)


Вот несколько ответов:

  1. Почему клиент скачивает рецепт? Разве рецепт нужен не только для создания пакета?

Да, клиент загружает рецепт, потому что, если двоичный файл недоступен для требуемого идентификатора пакета, этот рецепт будет использоваться для создания исходных кодов. Не все конфигурации доступны в conan-center.

Кроме того, параметры сборки в conan install команда повлияет на его поведение. Скачать рецепт удобнее, чем скачивать только пакет.

Это поведение не изменится, потому что это часть Conan 1.0 и нарушит работу многих пользователей, которые потребляют свои рецепты из кеша Conan.

  1. Почему в профиле клиента есть бит компилятора? Например, я могу понять ОС и архитектуру, поскольку клиентский компьютер X86-Windows не может обрабатывать пакет Linux или пакет ARM, но почему компилятор является частью конфигурации, указанной клиентом?

Разные компиляторы предоставляют разные двоичные файлы. В Windows вы можете использовать gcc из mingw или MSVC. В Linux вы можете использовать clang или gcc, в большинстве случаев они совместимы, но генерируют разные двоичные файлы, включая уровень оптимизации. Кроме того, есть другие важные флаги, связанные с каждым компилятором, например libcxx (libstdc ++, libc ++, libstdc ++ 11) или Runtime for MSVC (MT, MD). Некоторые версии компилятора поддерживают только C ++ 11 (GCC 4.9), поэтому вы должны быть уверены в совместимости компилятора при сборке проекта. По сути, это влияет на совместимость с ABI.

где конкретно указано, какие конфигурации следует использовать в процессе создания пакета?

Генерация пакетов задокументирована, пожалуйста, прочтите:

  1. conan install используется как для создания пакета, так и для использования пакета?

Если вы хотите разработать новый простой рецепт на своей машине, соберите его и используйте, conan create - это ваш путь. Вы будете использовать conan create в 90% случаев. при создании нового рецепта. Для больше информации.

С другой стороны, в основном используется conan install для использования пакета, но его можно использовать и для создания пакета. Когда?

  • Процесс разработки
  • Если вы хотите установить пакет, но также хотите собрать его из исходников.

Причина в том, что первым был conan install, он использовался для обоих предложений, но нам нужно было что-то более простое для создания пакета, поэтому был представлен conan create. Однако, поскольку мы не смогли удалить функцию из-за правила обратной совместимости, conan install по-прежнему можно использовать в качестве создателя пакета.

person uilianries    schedule 11.03.2021