Руководство. Установка и использование пакетов с CMake в Visual Studio
В этом руководстве показано, как создать программу C++ Hello World, которая использует библиотеку fmt
с CMake, vcpkg и Visual Studio. Вы установите зависимости, настройте, создадите и запустите простое приложение.
Необходимые компоненты
- Visual Studio с рабочей нагрузкой разработки C++ и компонентом CMake
- Git
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. Настройка проекта Visual Studio
Создание проекта Visual Studio
- Создание проекта в Visual Studio с помощью шаблона "Проект CMake"
Снимок экрана: пользовательский интерфейс Visual Studio для создания проекта CMake в Visual Studio
- Присвойте проекту имя helloworld
- Установите флажок "Разместить решение и проект в одном каталоге".
- Нажмите кнопку "Создать"
Снимок экрана: пользовательский интерфейс Visual Studio для именования проекта CMake и нажатия кнопки "Создать".
Настройте переменную среды
VCPKG_ROOT
.Откройте встроенное окно PowerShell разработчика в Visual Studio.
Снимок экрана: пользовательский интерфейс Visual Studio для встроенного окна разработчика PowerShell
Выполните следующие команды:
$env:VCPKG_ROOT = "C:\path\to\vcpkg" $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
Снимок экрана: пользовательский интерфейс Visual Studio для встроенного окна разработчика PowerShell, в котором показано, как настроить VCPKG_ROOT и добавить его в PATH.
Примечание.
Настройка переменных среды таким образом влияет только на текущий сеанс терминала. Чтобы сделать эти изменения постоянными во всех сеансах, задайте их на панели переменных среды Windows.
Откройте командную строку разработчика в Visual Studio.
Снимок экрана: пользовательский интерфейс Visual Studio для командной строки разработчика.
Выполните следующие команды:
set VCPKG_ROOT="C:\path\to\vcpkg" set PATH=%VCPKG_ROOT%;%PATH%
Снимок экрана: командная строка разработчика Visual Studio, показывающая, как настроить VCPKG_ROOT и добавить ее в PATH.
Примечание.
Настройка переменных среды таким образом влияет только на текущий сеанс терминала. Чтобы сделать эти изменения постоянными во всех сеансах, задайте их на панели переменных среды Windows.
Параметр
VCPKG_ROOT
помогает Visual Studio найти экземпляр vcpkg. Добавьте его, чтобыPATH
вы могли выполнять команды vcpkg непосредственно из оболочки.Создайте файл манифеста и добавьте зависимости.
Выполните следующую команду, чтобы создать файл манифеста 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. Настройка файлов проекта
Измените файл
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!" в консоль.CMakePresets.json
Настройте файл.- Переименуйте файл
CMakePresets.json
вCMakeUserPresets.json
. - Обновите его содержимое, как показано ниже. Замените
<VCPKG_ROOT>
путь к каталогу vcpkg.
{ "version": 2, "configurePresets": [ { "name": "default", "generator": "Ninja", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "<VCPKG_ROOT>/scripts/buildsystems/vcpkg.cmake" } } ] }
- Так как этот файл содержит закодированный абсолютный путь, рекомендуется не хранить этот файл под управлением версиями. Если вы используете Git, добавьте
CMakeUserPresets.json
в.gitignore
файл.
Файл
CMakeUserPresets.json
содержит один предустановку с именем default, этот предустановка задаетCMAKE_TOOLCHAIN_FILE
файл цепочки инструментов CMake vcpkg. Это позволяет vcpkg предоставлять пакеты CMake при настройке и сборке проекта. Дополнительные сведения см. в документации по интеграции vcpkg CMake.- Переименуйте файл
Измените файл
CMakeLists.txt
.Замените содержимое файла
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 helloworld.cpp)
: добавляет исполняемый целевой объект с именем HelloWorld, созданный из исходного файлаhelloworld.cpp
.target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: указывает, что исполняемыйHelloWorld
файл должен ссылаться на библиотекуfmt
. Ключевое словоPRIVATE
указывает, чтоfmt
требуется только для строительстваHelloWorld
и не должен распространяться на другие зависимые проекты.
4. Сборка и запуск проекта
Выполните сборку проекта.
Нажмите,
Ctrl+Shift+B
чтобы создать проект в Visual Studio.Запустите приложение.
Наконец, запустите исполняемый файл:
Снимок экрана: пользовательский интерфейс Visual Studio для запуска исполняемого файла.
Вы должны увидеть выходные данные:
Снимок экрана: выходные данные программы : "Hello World!"
Следующие шаги
Дополнительные сведения см vcpkg.json
. в нашей справочной документации:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по