Поделиться через


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

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

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

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. Настройка проекта Visual Studio

  1. Создание проекта Visual Studio

    • Создание проекта в Visual Studio с помощью шаблона "Проект CMake"

    создание нового проекта CMake

    Снимок экрана: пользовательский интерфейс Visual Studio для создания проекта CMake в Visual Studio

    • Присвойте проекту имя helloworld
    • Установите флажок "Разместить решение и проект в одном каталоге".
    • Нажмите кнопку "Создать"

    именование проекта CMake

    Снимок экрана: пользовательский интерфейс Visual Studio для именования проекта CMake и нажатия кнопки "Создать".

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

    Примечание.

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

    Откройте встроенное окно PowerShell разработчика в Visual Studio.

    открытие встроенной powershell для разработчика

    Снимок экрана: пользовательский интерфейс Visual Studio для встроенного окна разработчика PowerShell

    Выполните следующие команды:

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

    настройка переменных среды

    Снимок экрана: пользовательский интерфейс Visual Studio для встроенного окна разработчика PowerShell, в котором показано, как настроить VCPKG_ROOT и добавить его в PATH.

    Откройте командную строку разработчика в Visual Studio.

    открытие командной строки разработчика Visual Studio.

    Снимок экрана: пользовательский интерфейс Visual Studio для командной строки разработчика.

    Выполните следующие команды:

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

    настройка переменных среды

    Снимок экрана: командная строка разработчика Visual Studio, показывающая, как настроить VCPKG_ROOT и добавить ее в PATH.

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

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

    Выполните следующую команду, чтобы создать файл манифеста vcpkg (vcpkg.json):

    vcpkg new --application
    

    Команда vcpkg new добавляет vcpkg.json файл и vcpkg-configuration.json файл в каталог проекта.

    fmt Добавьте пакет в качестве зависимости:

    vcpkg add port fmt
    

    Теперь должно содержаться следующее vcpkg.json :

    {
        "dependencies": [
            "fmt"
        ]
    }
    

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

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

3. Настройка файлов проекта

  1. Измените файл helloworld.cpp.

    Замените содержимое helloworld.cpp следующим кодом:

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

    Этот исходный <fmt/core.h> файл содержит заголовок, который является частью библиотеки fmt . Функция main() вызывает fmt::print() сообщение "Hello World!" в консоль.

  2. CMakePresets.json Настройте файл.

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

    Измените CMakePresets.json содержимое, соответствующее приведенному ниже:

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

    Создайте CMakeUserPresets.json следующее содержимое:

    {
        "version": 2,
        "configurePresets": [
          {
            "name": "default",
            "inherits": "vcpkg",
            "environment": {
              "VCPKG_ROOT": "<path to vcpkg>"
            }
          }
        ]
      }
    

    Файл CMakePresets.json содержит один предустановку с именем vcpkg, который задает CMAKE_TOOLCHAIN_FILE переменную. Файл CMakeUserPresets.json задает VCPKG_ROOT переменную среды, чтобы указать абсолютный путь, содержащий локальную установку vcpkg. Рекомендуется не проверять CMakeUserPresets.json системы управления версиями.

  3. Измените файл CMakeLists.txt.

    Замените содержимое файла CMakeLists.txt приведенным ниже кодом.

    cmake_minimum_required(VERSION 3.10)
    
    project(HelloWorld)
    
    find_package(fmt CONFIG REQUIRED)
    
    add_executable(HelloWorld helloworld.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 helloworld.cpp): добавляет исполняемый целевой объект с именем HelloWorld, созданный из исходного файла helloworld.cpp.
    • target_link_libraries(HelloWorld PRIVATE fmt::fmt): указывает, что исполняемый HelloWorld файл должен ссылаться на библиотеку fmt . Ключевое PRIVATE слово указывает, что fmt требуется только для создания HelloWorld и не должно распространяться на другие зависимые проекты.

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

  1. Выполните сборку проекта.

    Нажмите, Ctrl+Shift+B чтобы создать проект в Visual Studio.

  2. Запустите приложение.

    Наконец, запустите исполняемый файл:

    Выполнение исполняемого файла

    Снимок экрана: пользовательский интерфейс Visual Studio для запуска исполняемого файла.

    Вы должны увидеть выходные данные:

    Выходные данные программы

    Снимок экрана: выходные данные программы : "Hello World!"

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

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