Менеджеры зависимостей С++
Рассмотрим применение менеджеров зависимостей на примере библиотеки FMT и исходного кода
#include <fmt/core.h>
int main()
{
fmt::print("Hello World!\n");
return 0;
}
1. Менеджер зависимостей magnet
Установка
1) Клонируем репозиторий git clone https://github.com/futureblur/magnet.git --recursive
2) Установка cd magnet/scripts && chmod +x ./LinuxInstaller.sh && ./LinuxInstaller.sh
3) Создаем папку проектов cd & mkdir magnet_projects
& cd magnet_projects
4) Создаем новый проект magnet new fmt_test
5) Установка зависимости magnet pull fmtlib/fmt
6) Запускаем сборку magnet build
7) Запуск скомпилированного файла magnet go
2. Менеджер зависимостей vcpkg
1) Создание нового каталога cd & mkdir fmt_test2 & cd fmt_test2
2) Создаем файл 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)
4) Установка vcpkg
yay -Ss vcpkg
5) Добавляем пользователей в группу vcpkg
sudo gpasswd -a my_user vcpkg
sudo gpasswd -a root vcpkg
6) Поищем библиотеку
vcpkg search fmt
7) Инициализируем настройки для приложения
vcpkg new --application
8) Подключение зависимости vcpkg add port fmt
9) Настраиваем права sudo chown my_user:my_user /opt/vcpkg/ -R
10) Добавляем текст исходника с помощью редактора nano helloword.cpp
11) Добавляем настройки сборки с помощью nano CMakePresets.txt
{
"version": 3,
"configurePresets": [
{
"name": "default",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "/opt/vcpkg/scripts/buildsystems/vcpkg.cmake"
}
}
]
}
12) Получаем настройки окружения cmake --preset=default
13) Выпооняем сборку
cmake --build build
14) Исходник запускается из папки build с помощью ./build/HelloWorld
3. Использование менеджера зависимостей conan
1) Создаем новую папку проекта
cd
mkdir fmt_test3
cd fmt_test3
2) Установка
yay -Ss conan
yay -S conan
3) Указываем настройки сборки в СmakeLists.txt nano CMakeLists.txt
GNU nano 7.2 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)
4) Получаем настройки окружения
conan profile detect —force
5) Описываем зависимости nano conanfile.txt
[requires]
fmt/10.2.0
[generators]
CMakeDeps
CMakeToolchain
6) Выполняем сборку зависимостей
conan install . --output-folder=build --build=missing
7) Собираем проект полностью
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
8) Запуск исходника ./HelloWorld
Теги документа