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


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

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

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

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. Создание папки проекта

Примечание.

Если вы используете это руководство в Windows и используете MSVC в качестве компилятора, необходимо запустить экземпляр Visual Studio Code из командной строки разработчика для VS или Developer PowerShell для VS. Это гарантирует правильность настройки пути компилятора и других переменных среды.

Создайте папку для хранения файлов проекта в выбранном расположении. В этом руководстве мы создадим папку с именем Helloworld. Затем откройте папку с помощью Visual Studio Code.

mkdir helloworld
code helloworld

3. Установка расширений Visual Studio Code

Перейдите в представление расширения и установите расширение C++. Это позволяет использовать IntelliSense C++ и навигацию по коду.

установка расширения Visual Studio Code на C++

Снимок экрана: представление расширения Visual Studio Code с расширением C++

Установите расширение средств CMake. Это обеспечивает поддержку CMake в Visual Studio Code.

установка расширения Visual Studio Code для средств CMake

Снимок экрана: представление расширения Visual Studio Code с расширением средств CMake

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

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

Открытие нового терминала в Visual Studio Code: терминал > нового терминала

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

Примечание.

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

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

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

Снимок экрана: настройка VCPKG_ROOT и добавление его в PATH в терминале Visual Studio Code.

Примечание.

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

Примечание.

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

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

Примечание.

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

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

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

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

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

vcpkg new --application

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

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

vcpkg add port fmt

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

{
  "dependencies": [
    "fmt"
  ]
}

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

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

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

  1. 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 и не должно распространяться на другие зависимые проекты.
  1. helloworld.cpp Создайте файл со следующим содержимым:
#include <fmt/core.h>

int main()
{
    fmt::print("Hello World!\n");
    return 0;
}

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

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

{
  "version": 2,
  "configurePresets": [
    {
      "name": "vcpkg",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      }
    }
  ]
}
  1. Создайте CMakeUserPresets.json файл в каталоге Helloworld со следующим содержимым:
{
  "version": 2,
  "configurePresets": [
    {
      "name": "default",
      "inherits": "vcpkg",
      "environment": {
        "VCPKG_ROOT": "<path to vcpkg>"
      }
    }
  ]
}

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

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

  1. CMake: Build Запустите команду проекта, перейдя к палитре команд в палитре команд в палитре команд представления >

Команда сборки CMake в Visual Studio Code

Снимок экрана: выбор команды сборки CMake в Visual Studio Code.

default Выберите предустановку CMake. Это позволяет цепочке инструментов vcpkg.

Выбор предустановки в команде сборки CMake в Visual Studio Code

Снимок экрана: выбор предустановки в команде сборки CMake в Visual Studio Code.

  1. Запуск проекта

Запустите программу.

./build/HelloWorld.exe
./build/HelloWorld

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

Hello World!

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

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