Руководство. Установка и использование пакетов с CMake в Visual Studio Code
В этом руководстве показано, как создать программу C++ Hello World, которая использует библиотеку fmt
с CMake, vcpkg и Visual Studio Code. Вы установите зависимости, настройте, создадите и запустите простое приложение.
Необходимые компоненты
- Visual Studio Code
- Компилятор C++.
- Windows 7 или более поздней версии
1. Настройка vcpkg
Клонирование репозитория
Первым шагом является клонирование репозитория vcpkg из GitHub. Репозиторий содержит скрипты для получения исполняемого файла vcpkg и реестра курируемых библиотек с открытым исходным кодом, поддерживаемых сообществом vcpkg. Для этого выполните следующую команду:
git clone https://github.com/microsoft/vcpkg.git
Управляемый реестр vcpkg — это набор из более чем 2000 библиотек с открытым исходным кодом. Эти библиотеки были проверены конвейерами непрерывной интеграции vcpkg для совместной работы. Хотя репозиторий vcpkg не содержит исходный код для этих библиотек, он содержит рецепты и метаданные для сборки и установки их в систему.
Запуск скрипта начальной загрузки
Теперь, когда вы клонировали репозиторий 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++
Установите расширение средств CMake. Это обеспечивает поддержку CMake в Visual Studio Code.
Снимок экрана: представление расширения Visual Studio Code с расширением средств CMake
4. Настройка переменных среды
VCPKG_ROOT
Настройте переменную среды.
Открытие нового терминала в Visual Studio Code: терминал > нового терминала
Выполните следующие команды:
Примечание.
Настройка переменных среды таким образом влияет только на текущий сеанс терминала. Чтобы сделать эти изменения постоянными во всех сеансах, задайте их на панели переменных среды Windows.
$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"
Снимок экрана: настройка 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 непосредственно из оболочки.
- Создайте файл манифеста и добавьте зависимости.
Выполните следующую команду, чтобы создать файл манифеста 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. Настройка файлов проекта
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
и не должно распространяться на другие зависимые проекты.
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"
}
}
]
}
- Создайте
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. Сборка и запуск проекта
CMake: Build
Запустите команду проекта, перейдя к палитре команд в палитре команд в палитре команд представления >
Снимок экрана: выбор команды сборки CMake в Visual Studio Code.
default
Выберите предустановку CMake. Это позволяет цепочке инструментов vcpkg.
Снимок экрана: выбор предустановки в команде сборки CMake в Visual Studio Code.
- Запуск проекта
Запустите программу.
./build/HelloWorld.exe
./build/HelloWorld
Вы должны увидеть выходные данные:
Hello World!
Следующие шаги
Дополнительные сведения см vcpkg.json
. в нашей справочной документации: