Skip to content

Latest commit

 

History

History
76 lines (45 loc) · 7.08 KB

conanfile_intro.md

File metadata and controls

76 lines (45 loc) · 7.08 KB

Концепция использования рецептов

В Conan 2 рецепты играют ключевую роль в управлении пакетами. Рецепт — это описание того, как создать, собрать и использовать пакет. Он определяет все аспекты пакета, включая его зависимости, настройки сборки, команды для компиляции и установки, а также метаданные, такие как версия, автор и лицензия. Рецепты обычно пишутся на Python в файле conanfile.py, что делает их гибкими и мощными инструментами для настройки пакетов.

В общем случае рецепт это множество из обработчиков, которые запускаются в зависимости от вызванных conan команд.

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

Далее в рецепте описывается процесс сборки пакета. Это может включать вызов систем сборки, таких как CMake, Makefile или других инструментов. Рецепт позволяет указать, как собирать пакет для разных платформ, компиляторов и конфигураций (например, Debug или Release). Это делает пакеты универсальными и пригодными для использования в различных средах.

После сборки рецепт может определять, как пакет должен быть упакован и установлен. Это включает копирование заголовочных файлов, библиотек и других ресурсов в соответствующие каталоги. Рецепт также может содержать инструкции для генерации файлов, которые помогают интегрировать пакет в проекты, например, файлы для CMake или pkg-config.

Рецепты в Conan 2 поддерживают профили, которые позволяют настраивать параметры сборки и окружения для разных сценариев. Это делает процесс сборки гибким и адаптируемым под конкретные нужды проекта. Например, можно легко переключаться между сборкой для разных архитектур или операционных систем.

Использование рецептов в Conan 2 позволяет создавать воспроизводимые и переносимые пакеты, которые могут быть легко использованы в различных проектах. Они обеспечивают контроль над процессом сборки и интеграции, что делает Conan мощным инструментом для управления зависимостями в C++ проектах.

Методы в conanfile.py и их назначение

В файле conanfile.py в Conan 2 используется множество методов, каждый из которых выполняет определенную роль в процессе создания, сборки и управления пакетами. Вот список основных методов и их назначение:


Методы в conanfile.py в Conan 2.0

В Conan 2.0 conanfile.py используется для определения рецептов пакетов. Этот файл содержит различные методы, которые описывают, как пакет должен быть собран, установлен и использован. Вот основные методы, которые могут быть использованы в conanfile.py:

Основные методы

settings

Определяет настройки, которые будут использоваться для сборки пакета. Например, архитектура, компилятор, версия стандарта языка и т.д.

options

Определяет опции, которые могут быть заданы пользователем для настройки сборки пакета.

default_options

Задает значения по умолчанию для опций, определенных в методе options.

requires

Определяет зависимости пакета.

build_requires

Определяет зависимости, необходимые только для сборки пакета.

tool_requires

Определяет инструменты, необходимые для сборки пакета.

exports

Определяет файлы, которые будут экспортированы вместе с рецептом.

exports_sources

Определяет исходные файлы, которые будут экспортированы вместе с рецептом.

generators

Определяет генераторы, которые будут использоваться для создания файлов конфигурации.

source

Определяет, как будут загружены исходные файлы пакета.

build

Определяет, как будет собран пакет.

package

Определяет, как будут упакованы скомпилированные файлы пакета.

package_info

Определяет информацию о пакете, которая будет использоваться потребителями пакета.

package_id

Определяет, как будет вычисляться идентификатор пакета.

deploy

Определяет, как будут развернуты файлы пакета.

Подробнее написано тут