IDE и пакетный менеджер
IDE
Вы можете использовать IDE по вкусу для выполнения практик/домашних заданий.
Но чтобы ваш код был в определенном стиле и при написании кода вы быстро увидели опечатки/минорные баги - вам предоставлены .clang-tidy и .clang-format файлы в репозиториях.
В подразделах описаны этапы конфигурации некоторых IDE (рекомендуется Clion).
Пакетный менеджер
Пакетный менеджер нужен для упраления зависимостями в проекте. В рамках данного курса мы будет использовать для этих целей vcpkg.
vcpkg - это не только инструмент, но и репозиторий с рецептами пакетов, который нужно склонировать.
git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
или .\vcpkg\bootstrap-vcpkg.bat
для Windows
Далее будет удобно добавить ./vcpkg/vcpkg
в PATH
:
sudo ln -s "$(pwd)/vcpkg/vcpkg" /usr/bin/vcpkg
Самая главная команда vcpkg:
vcpkg help
Чтобы узнать список установленных библиотек, используйте:
vcpkg list
Для поиска конкретного пакета можно воспользоваться vcpkg search
, например:
vcpkg search benchmark
benchmark 1.6.0#1 A library to support the benchmarking of functions, similar to unit-tests.
celero 2.8.2#1 Celero is a modern cross-platform (Windows, Linux, MacOS) Microbenchmarkin...
hayai 2019-08-10#1 C++ benchmarking framework
...
Поиск рецептов будет осуществляется в скачанном репозитории, так что если ваши рецепты устарели - сделайте git pull
.
Чтобы обновить пакеты помогут команды vcpkg update
и vcpkg upgrade
. Обновите установленные пакеты:
vcpkg upgrade --no-dry-run
Установить пакет можно при помощи команды vcpkg install
:
vcpkg install benchmark
Эта команда по умолчанию соберёт выбранный пакет в Release и Debug конфигурациях. Чтобы понять что и как будет собираться для выбранного пакета, можно заглянуть ./vcpkg/ports/PACKAGE_NAME
. Чтобы понять в какой конфигурации — ознакомьтесь с vcpkg help triplets
, а также со скриптами триплетов, которые находятся в ./vcpkg/triplets/
.
По умолчанию на Windows используется MS тулчейн (MSVC/clang-cl), для работы с MinGW нужно явно указать параметр --triplet=x64-mingw-dynamic
при выполнении vcpkg install
После исполнения команды, вам скорее всего подскажут как использовать этот пакет, вроде:
find_package(benchmark CONFIG REQUIRED)
target_link_libraries(main PRIVATE benchmark::benchmark benchmark::benchmark_main)
Если вы повторите команду vcpkg install
, то он напишет, что пакет установлен, и продублирует сообщение find_package(...
. И если вы добавите этот код в ваш CMakeLists.txt, то ничего не заработает!
Нужно подсказать CMake где хранятся find-package скрипты из vcpkg. Для этого используется следующий флаг при конфигурации cmake (D:\src\vcpkg
в данном примере в качестве полного путь до vcpkg
директории, замените на свой!):
-DCMAKE_TOOLCHAIN_FILE=D:\src\vcpkg\scripts\buildsystems\vcpkg.cmake
Также, если вы пользуетесь Windows нативно (т.е. не WSL), нужно добавить -DVCPKG_TARGET_TRIPLET=x64-mingw-static
для тулчейна MinGW и -DVCPKG_TARGET_TRIPLET=x64-windows-static
для тулчейна MSVC/clang-cl
В дополнение к ручной остановке пакетов можно в каждом проекте создать манифест в файле vcpkg.json
, в котором явно перечисляются все зависимости. CMake, интегрированный с vcpkg, как было показано выше, в таком случае сам установит и соберёт все необходимые зависимости. В нашем в курсе используется именно этот вариант.