Использование менеджеров зависимостей С++

Менеджеры зависимостей С++

Рассмотрим применение менеджеров зависимостей на примере библиотеки 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

Теги документа