Посмотрите на менеджер пакетов Hunter , когда вы уже используете CMake для настройки своего проекта. Он автоматически загружает и создает ваши зависимости с помощью всего лишь нескольких строк дополнительного кода cmake. Охотник основан на целях экспорта и импорта cmake.
Например, если вы хотите использовать библиотеку GoogleTest в своем проекте на основе cmake, добавьте следующие строки в корневой каталог CMakeLists.txt
# file root CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
# To get hunter you need to download and include a single cmake file
# see documentation for correct name
include("../gate.cmake")
project(download-gtest)
# set the location of all your hunter-packages
set( HUNTER_ROOT_DIR C:/CppLibraries/HunterLibraries )
# This call automaticall downloads and compiles gtest the first time
# cmake is executed. The library is then cached in the HUNTER_ROOT_DIR
hunter_add_package(GTest)
# Now the GTest library can be found and linked to by your own project
find_package(GTest CONFIG REQUIRED)
add_executable(foo foo.cpp)
target_link_libraries(foo GTest::main)
Не все библиотеки, которые вы перечисляете, доступны как "пакеты-охотники", но проект с открытым исходным кодом, так что вы можете создавать пакеты-охотники для ваших зависимостей и фиксировать их в проекте. Здесь - это список библиотек, которые уже доступны в виде пакетов hunter.
Это не решит все ваши проблемы из коробки, потому что вы должны создавать пакеты hunter-пакетов для ваших зависимостей. Но существующий фреймворк уже выполняет большую часть работы, и лучше использовать его вместо самостоятельного решения, сделанного наполовину.