Руководство. Установка и использование пакетов с vcpkg
В этом руководстве показано, как создать программу C++ "Hello World", которая использует библиотеку fmt
с CMake и vcpkg. Вы установите зависимости, настройте, создадите и запустите простое приложение.
Необходимые компоненты
Примечание.
Для пользователей Windows msVC Visual Studio (Компилятор Microsoft Visual C++) является обязательным компилятором для разработки C++.
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. Настройка проекта
Настройте переменную среды
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 непосредственно из оболочки.Создайте каталог проекта.
mkdir helloworld && cd helloworld
3. Добавление зависимостей и файлов проекта
Создайте файл манифеста и добавьте
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
в управление версиями, чтобы обеспечить согласованность версий в разных средах разработки.Создайте файлы проекта.
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. Сборка и запуск проекта
Запуск конфигурации 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
Сборка проекта
Запустить:
cmake --build build
Выполнение приложения
Наконец, запустите исполняемый файл, чтобы увидеть приложение в действии:
./build/HelloWorld Hello World!
.\build\HelloWorld.exe Hello World!
Следующие шаги
Дополнительные сведения см vcpkg.json
. в нашей справочной документации:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по