Включить библиотеку Boost в кроссплатформенный проект C ++ с использованием CMake - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно включить библиотеку Boost (в частности, Context) в проект C ++, который использует CMAKE в качестве системы управления сборкой.Поскольку, учитывая исходный код репозитория, проект должен быть собран с использованием cmake и make без установки какого-либо другого программного обеспечения или библиотеки в целевой системе (Unix, Windows или чего-либо еще), мне нужно настроить Cmake наисточник Boost из моего репозитория, скомпилируйте его и свяжите с моим проектом, не устанавливая библиотеку Boost в целевой системе отдельным этапом.Это возможно?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

CMake имеет специальный модуль для работы с библиотеками boost`, см. FindBoost .

Файл CMakeLists.txt обычно содержит что-то вроде этого для ссылки на библиотеку boost:

find_package(Boost REQUIRED COMPONENTS context )
if(Boost_FOUND)
  target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})

  target_link_libraries(${PROJECT_NAME} INTERFACE Boost::context)
endif(Boost_FOUND)

Это будет просто ссылка на библиотеку boost::context.Вы должны либо создать файлы библиотеки boost :: context, как предложено в ответе @ Hugo, либо загрузить их откуда-то вроде здесь , либо использовать менеджер пакетов для установки их в linux.

Если Context was header only, вам потребуется только:

find_package(Boost REQUIRED COMPONENTS boost)
if(Boost_FOUND)
  target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS})
endif(Boost_FOUND)

В любом случае вы можете включить файлы boost::context в свой проект и затем установить переменные BOOST_ROOT или BOOST_INCLUDEDIR, как описано в FindBoost документация.

0 голосов
/ 18 мая 2018

Да, вы можете использовать ExternalProject_Add, см. Документацию по адресу https://cmake.org/cmake/help/latest/module/ExternalProject.html

Посмотрите на ссылку ниже для примера использования, который компилирует повышение

https://github.com/arnaudgelas/ExternalProject/blob/master/External-Boost.cmake

НТН

...