Здравствуйте, пффф, Вы писали:
В общем, после ковыряния родилось несколько вариантов.
1) Девелоперский буст (boost-dev в терминах линуксовых пакетных менеджеров) можно скачать так:
git clone --single-branch --branch master --recurse-submodules -j8 https://github.com/boostorg/boost.git
2) Девелоперский буст содержит CMakeLists.txt и вроде как заточен под CMake, но CMake официально пока не поддерживается.
3) Релизный архив буста имеет другую структуру и там нет CMakeLists.txt и прочего симейкнутого, он собирается классически через bootstrap и bjam/b2
Итак, мои варианты:
Вариант первый, простой, для использования хидер-онли библиотек.
Качаем официальный архив, например,
https://archives.boost.io/release/1.85.0/source/boost_1_85_0.zip.
Распаковываем, например, в D:\boost
Делаем переменную окружения BOOST_ROOT=D:\boost
В своём CMakeLists.txt делаем так:
if(NOT Boost_INCLUDE_DIR)
if(DEFINED ENV{BOOST_ROOT})
set(Boost_INCLUDE_DIR "$ENV{BOOST_ROOT}")
endif()
endif()
find_package(Boost)
include_directories(${Boost_INCLUDE_DIRS})
Вариант второй, жирный.
Boost выкачивается и конфигурируется каждый раз при перегенерации сборочных скриптов, и в каждом конфиге занимает полтора гига и минут пять времени (на шустрой машине может наверное и за пару минут управится).
Таким образом, если я хочу собирать MSVC x86/x64 и MinGW x86/x64 — это занимает 20 минут времени и 6 гигов места на проект на диске.
Зато в этом варианте вроде как можно любые бустовые либы использовать, но мне пока не надо.
В своём CMakeLists.txt делаем так:
include(FetchContent)
FetchContent_Declare(
Boost
URL https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.xz
URL_MD5 893b5203b862eb9bbd08553e24ff146a
DOWNLOAD_EXTRACT_TIMESTAMP ON
)
FetchContent_MakeAvailable(Boost)
По FetchContent_Declare.
Рецепт брал тут —
https://github.com/boostorg/cmake?tab=readme-ov-file#using-boost-with-fetchcontent
Тут буст предпоследний.
URL_MD5 — не обязательно, и можно записать по-другому, как "URL_HASH MD5:893b5203b862eb9bbd08553e24ff146a"
Можно через WGET (или как удобнее) скачать архив, и положить локально, и подсовывать путь вместо URL. Хз сколько времени экономит, этот XZ всего 90 метров, но похоже, там есть всё что надо, и можно жить без сети.
У меня так работает
FetchContent_Declare(
Boost
URL D:/boost-1.84.0.tar.xz
DOWNLOAD_EXTRACT_TIMESTAMP ON
)
В этом варианте вроде как можно юзать любую бустовую либу, но я не проверял.
Моя проверка была минимальной, соберётся или нет:
#include <boost/container/static_vector.hpp>
Третий вариант: собрать девелоперский вариант буста с симейком, сделать install и типа всё будет шоколадно. У меня не получилось, в итоге накопал первые два.
Комментарии, предложения, замечания — приветствуются.
Все обратные тихонечко проходят мимо, не расплёскивая своё говно