Руководство. Установка и использование пакетов с vcpkg

В этом руководстве показано, как создать программу C++ "Hello World", которая использует библиотеку fmt с CMake и vcpkg. Вы установите зависимости, настройте, создадите и запустите простое приложение.

Необходимые компоненты

  • Терминал
  • Компилятора C++
  • CMake.
  • Git

Примечание.

Для пользователей Windows msVC Visual Studio (Компилятор Microsoft Visual C++) является обязательным компилятором для разработки C++.

1. Настройка vcpkg

  1. Клонирование репозитория

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

    git clone https://github.com/microsoft/vcpkg.git
    

    Управляемый реестр vcpkg — это набор из более чем 2000 библиотек с открытым исходным кодом. Эти библиотеки были проверены конвейерами непрерывной интеграции vcpkg для совместной работы. Хотя репозиторий vcpkg не содержит исходный код для этих библиотек, он содержит рецепты и метаданные для сборки и установки их в систему.

  2. Запуск скрипта начальной загрузки

    Теперь, когда вы клонировали репозиторий vcpkg, перейдите к vcpkg каталогу и выполните скрипт начальной загрузки:

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

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

    Вот и все! vcpkg настроен и готов к использованию.

2. Настройка проекта

  1. Настройте переменную среды VCPKG_ROOT.

    export VCPKG_ROOT=/path/to/vcpkg
    export PATH=$VCPKG_ROOT:$PATH
    

    Примечание.

    Установка переменных среды с помощью export команды влияет только на текущий сеанс оболочки. Чтобы сделать это изменение постоянным в сеансах, добавьте export команду в скрипт профиля оболочки (например, ~/.bashrc или ~/.zshrc).

    set VCPKG_ROOT="C:\path\to\vcpkg"
    set PATH=%VCPKG_ROOT%;%PATH%
    

    Примечание.

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

    $env:VCPKG_ROOT = "C:\path\to\vcpkg"
    $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
    

    Примечание.

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

    Параметр VCPKG_ROOT указывает vcpkg, где расположен экземпляр vcpkg. Добавьте его, чтобы PATH вы могли выполнять команды vcpkg непосредственно из оболочки.

  2. Создайте каталог проекта.

    mkdir helloworld && cd helloworld
    

3. Добавление зависимостей и файлов проекта

  1. Создайте файл манифеста и добавьте fmt зависимость.

    Сначала создайте файл манифеста (vcpkg.json) в каталоге проекта, выполнив vcpkg new команду из helloworld каталога:

    vcpkg new --application
    

    Затем добавьте fmt зависимость:

    vcpkg add port fmt
    

    Файл vcpkg.json должен выглядеть следующим образом:

    {
        "dependencies": [
            "fmt"
        ]
    }
    

    Это файл манифеста. vcpkg считывает файл манифеста, чтобы узнать, какие зависимости необходимо установить и интегрировать с CMake, чтобы предоставить зависимости, необходимые для проекта.

    Файл по умолчанию vcpkg-configuration.json вводит базовые ограничения, указывая минимальные версии зависимостей, которые должен использовать проект. При изменении этого файла выходит за рамки область этого руководства, она играет важную роль в определении ограничений версий для зависимостей проекта. Таким образом, несмотря на то, что это не обязательно для этого руководства, рекомендуется добавить vcpkg-configuration.json в управление версиями, чтобы обеспечить согласованность версий в разных средах разработки.

  2. Создайте файлы проекта.

    CMakeLists.txt Создайте файл со следующим содержимым:

    cmake_minimum_required(VERSION 3.10)
    
    project(HelloWorld)
    
    find_package(fmt CONFIG REQUIRED)
    
    add_executable(HelloWorld main.cpp)
    
    target_link_libraries(HelloWorld PRIVATE fmt::fmt)
    

    Теперь давайте разберем, что делает каждая строка в CMakeLists.txt файле:

    • cmake_minimum_required(VERSION 3.10): указывает, что минимальная версия CMake, необходимая для сборки проекта, — 3.10. Если версия CMake, установленная в вашей системе, ниже этой, будет создана ошибка.
    • project(HelloWorld): задает имя проекта "HelloWorld".
    • find_package(fmt CONFIG REQUIRED): ищет библиотеку fmt с помощью файла конфигурации CMake. Ключевое слово REQUIRED гарантирует, что ошибка создается, если пакет не найден.
    • add_executable(HelloWorld main.cpp): добавляет исполняемый целевой объект с именем HelloWorld, созданный из исходного файла main.cpp.
    • target_link_libraries(HelloWorld PRIVATE fmt::fmt): указывает, что исполняемый HelloWorld файл должен ссылаться на библиотеку fmt . Ключевое слово PRIVATE указывает, что fmt требуется только для строительства HelloWorld и не должен распространяться на другие зависимые проекты.

    main.cpp Создайте файл со следующим содержимым:

    #include <fmt/core.h>
    
    int main()
    {
        fmt::print("Hello World!\n");
        return 0;
    }
    

    В этом main.cpp файле <fmt/core.h> заголовок включен для использования библиотеки fmt . Затем main() функция вызывает fmt::print() сообщение "Hello World!" в консоль.

4. Сборка и запуск проекта

  1. Запуск конфигурации CMake

    Чтобы система проектов CMake распознала библиотеки C++, предоставляемые vcpkg, необходимо предоставить vcpkg.cmake файл цепочки инструментов. Чтобы автоматизировать это, создайте CMakePresets.json файл в каталоге Helloworld со следующим содержимым:

    {
      "version": 2,
      "configurePresets": [
        {
          "name": "default",
          "generator": "Ninja",
          "binaryDir": "${sourceDir}/build",
          "cacheVariables": {
            "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
          }
        }
      ]
    }
    

    Этот CMakePresets.json файл содержит одну предустановку по умолчанию для CMake и задает CMAKE_TOOLCHAIN_FILE переменную. Позволяет CMAKE_TOOLCHAIN_FILE системе проектов CMake распознавать библиотеки C++, предоставляемые vcpkg. CMakePresets.json Добавление автоматизирует процесс указания цепочки инструментов при запуске CMake.

    Настройте сборку с помощью CMake:

    cmake --preset=default
    
  2. Сборка проекта

    Запустить:

    cmake --build build
    
  3. Выполнение приложения

    Наконец, запустите исполняемый файл, чтобы увидеть приложение в действии:

    ./build/HelloWorld
    
    Hello World!
    
    .\build\HelloWorld.exe
    
    Hello World!
    

Следующие шаги

Дополнительные сведения см vcpkg.json. в нашей справочной документации: