Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этом руководстве показано, как создать программу 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.batcd vcpkg; .\bootstrap-vcpkg.batcd 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 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!" в консоль.
4. Сборка и запуск проекта
Запуск конфигурации CMake
CMake может автоматически связывать библиотеки, установленные vcpkg, если
CMAKE_TOOLCHAIN_FILEзадано использование пользовательской цепочки инструментов vcpkg. Это может быть компилировано с помощью предварительно настроенных файлов CMake.Создайте следующие файлы в каталоге
helloworld: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системы управления версиями.Наконец, настройте сборку с помощью CMake:
cmake --preset=defaultСборка проекта
Запустить:
cmake --build buildВыполнение приложения
Наконец, запустите исполняемый файл, чтобы увидеть приложение в действии:
./build/HelloWorld Hello World!.\build\HelloWorld.exe Hello World!