Skip to content
This repository was archived by the owner on Sep 2, 2026. It is now read-only.

Repository files navigation

oop-2026

Официальная документация: Microsoft vcpkg Getting Started

Что такое vcpkg

vcpkg — это кроссплатформенный менеджер зависимостей для C и C++, разработанный Microsoft. Его основная задача — избавить разработчиков от ручной настройки сторонних библиотек на разных операционных системах.

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

Режим манифеста

Режим манифеста — это рекомендуемый способ работы с vcpkg. В этом режиме зависимости проекта описываются в файле vcpkg.json, аналогично requirements.txt в Python или package.json в Node.js.

Благодаря этому любой разработчик может получить идентичное окружение, выполнив одну команду. Зависимости устанавливаются локально (можно зафиксировать конкретные версии библиотек) в каталог проекта, что исключает конфликты версий между разными проектами.

Все эти настройки хранятся в папке с проектом

Установка vcpkg

Процесс установки зависит от операционной системы, но общая логика едина: клонирование репозитория, выполнение скрипта инициализации и настройка переменных окружения.

Предварительные требования

Перед установкой убедитесь, что в системе установлены:

  • Git
  • Компилятор C++ (MSVC на Windows, GCC/Clang на Linux и macOS)
  • CMake

Windows

  1. Выберите папку для установки. Рекомендуемый путь: C:\vcpkg

  2. Создайте папку, откройте терминал от имени администратора и выполните:

git clone https://github.com/microsoft/vcpkg C:\vcpkg
cd C:\vcpkg

.\bootstrap-vcpkg.bat -disableMetrics

Note

Параметр -disableMetrics отключает сбор анонимной телеметрии.

  1. Создайте переменную VCPKG_ROOT и добавьте vcpkg в переменную PATH:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\vcpkg", "Machine")
[Environment]::SetEnvironmentVariable("VCPKG_ROOT", "C:\vcpkg", "Machine")

Изменения вступают в силу по мере новых процессов системы. Рекомендуется перезапустить операционную систему.

Linux

  1. Установите зависимости:

Для Debian/Ubuntu

sudo apt update && sudo apt install git curl zip unzip tar vcpkg

Для Arch-like Linux

sudo pacman -Syu git curl zip unzip tar vcpkg
  1. Склонируйте и инициализируйте vcpkg:
git clone https://github.com/microsoft/vcpkg $VCPKG_ROOT
cd $VCPKG_ROOT

./bootstrap-vcpkg.sh -disableMetrics

Note

Параметр -disableMetrics отключает сбор анонимной телеметрии.

macOS

  1. Установите homebrew — менеджер пакетов для MacOS.

  2. Установите vcpkg:

brew install vcpkg
  1. Склонируйте и инициализируйте vcpkg:
git clone https://github.com/microsoft/vcpkg $VCPKG_ROOT
cd $VCPKG_ROOT

./bootstrap-vcpkg.sh -disableMetrics

Note

Параметр -disableMetrics отключает сбор анонимной телеметрии.

Инициализация манифеста

В корне вашего проекта выполните:

vcpkg new --application

Команда создаст два файла:

  • vcpkg.json — описывает прямые зависимости проекта.
  • vcpkg-configuration.json — управляет источниками пакетов и базовыми версиями (baseline), что позволяет «заморозить» состояние репозитория и избежать неожиданных обновлений

Пример vcpkg.json:

{
  "dependencies": ["sfml", "boost"]
}

Добавление зависимостей

Используйте команду add port для добавления библиотек:

vcpkg add port sfml boost

Интеграция с системами сборки

CMake

Передайте путь к toolchain-файлу vcpkg при конфигурации:

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake

Использование системных пакетов (Linux, macOS)

Технически проект можно собрать, установив зависимости через системный менеджер (pacman, apt, brew). Однако такой подход имеет недостатки:

  • сложно фиксировать версии библиотек
  • различия в путях и конфигурациях между дистрибутивами
  • отсутствие единого интерфейса для всех платформ

vcpkg устраняет эти проблемы, предоставляя согласованное поведение на всех ОС.

Экспорт зависимостей

Для переноса скомпилированных библиотек в другие среды разработки или сборки необходимо сначала установить зависимости, а затем экспортировать их:

vcpkg install
vcpkg export --zip --output-dir=./vcpkg_sdks

Warning

Скомпилированные бинарные файлы жестко привязаны к операционной системе. Для обеспечения кроссплатформенности эти команды необходимо выполнить отдельно на Windows и на Linux, а затем объединить содержимое папок installed из обоих архивов в одну структуру (либо подготовить два отдельных архива и выбирать нужный через CMake).

В результате будет создан ZIP-архив, содержащий готовые к использованию библиотеки, заголовочные файлы и CMake-конфигурации.

Настройка проекта для работы с экспортом

Чтобы проект использовал локальные зависимости вместо попытки скачать их из интернета, необходимо отключить режим манифеста и указать путь к локальному toolchain-файлу.

  1. Добавить строку до вызова команды project()
set(VCPKG_MANIFEST_MODE OFF)
  1. Заменить переменную окружения на относительный путь к экспортированной папке с зависимостями
    {
      "name": "vcpkg",
      "hidden": true,
      "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
    },
    {
      "name": "vcpkg",
      "hidden": true,
      "toolchainFile": "${sourceDir}/vcpkg-export/scripts/buildsystems/vcpkg.cmake"
    },

Отладка и диагностика

  • Просмотр установленных пакетов: vcpkg list
  • Поиск доступных портов: vcpkg search <имя>
  • Информация о пакете: vcpkg info <порт>

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages