0 / 0 / 0
Регистрация: 12.09.2023
Сообщений: 2
|
|
1 | |
Boost + cmake12.09.2023, 21:00. Показов 1337. Ответов 3
Добрый вечер! Помогите, пожалуйста, с проблемой.
Нужно использовать boost_beast и boost_asio в проекте с CMake. У меня ОС Ubuntu, устанавливал boost через команду: Код
sudo apt-get install libboost-all-dev Код
cmake_minimum_required(VERSION 3.22) project(MyApp VERSION 0.1 LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_CXX_STANDARD 14) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package( Boost REQUIRED COMPONENTS thread ) set(BOOST_ENABLE_CMAKE ON) include_directories( ${Boost_INCLUDE_DIRS} ) add_executable( MyApp main.cpp ) target_link_libraries( MyApp Boost::thread ) Код
cmake_minimum_required(VERSION 3.22) project(MyApp VERSION 0.1 LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_CXX_STANDARD 14) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCCe ON) find_package( Boost REQUIRED COMPONENTS asio ) set(BOOST_ENABLE_CMAKE ON) include_directories( ${Boost_INCLUDE_DIRS} ) add_executable( MyApp main.cpp ) target_link_libraries( MyApp Boost::asio ) Код
/usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141: ошибка: Could not find a configuration file for package "boost_asio" that exactly matches requested version "1.74.0". The following configuration files were considered but not accepted: /usr/lib/x86_64-linux-gnu/cmake/boost_asio-1.74.0/boost_asio-config.cmake, version: unknown /lib/x86_64-linux-gnu/cmake/boost_asio-1.74.0/boost_asio-config.cmake, version: unknown /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:258 (boost_find_component) /usr/share/cmake-3.22/Modules/FindBoost.cmake:594 (find_package) CMakeLists.txt:17 (find_package) Заранее спасибо за помощь! P.S.: пробовал решение с другого форума с FetchContent -- не помогло, бесконечно компилится.
0
|
|
12.09.2023, 21:00 | |
Ответы с готовыми решениями:
3
Boost CMake Boost и Cmake Boost & CMake Не получается заставить CMake работать с boost |
Модератор
![]() 2493 / 1042 / 358
Регистрация: 11.08.2017
Сообщений: 3,192
|
|
12.09.2023, 21:11 | 2 |
![]() Решение
Ну так вроде для Asio надо линковать Boost::headers, что не только для asio но и для всех частей буста которые header only, например asio, beast и тд. И для них в компонентах можно не указывать что нужно, просто требуется Boost и все
У меня вот так все работает Код
find_package(Boost REQUIRED) #... target_link_libraries(${PROJECT_NAME} Boost::headers)
1
|
0 / 0 / 0
Регистрация: 12.09.2023
Сообщений: 2
|
|
12.09.2023, 23:12 [ТС] | 3 |
И у меня.... Смотрел решение на стековерфлоу, нигде подобного не нашёл -- видимо плохо искал. Ужас какой-то. Спасибо Вам большое.
P.S.: а эта фишка есть где-то на оф сайте boost, или откуда Вы про это узнали?
0
|
18490 / 9642 / 2361
Регистрация: 30.01.2014
Сообщений: 16,899
|
|
13.09.2023, 08:47 | 4 |
m_Leonid, https://cmake.org/cmake/help/l... ed-targets
Но вообще как бы без всякой документации понятно, что header-only библиотеки не линкуются и target_link_libraries для них по сути лишний. Единственное что вы могли бы почерпнуть из документации к boost - это какие именно библиотеки являются header-only, а какие нет. А дальше только остается 2+2 сложить.
0
|
13.09.2023, 08:47 | |
13.09.2023, 08:47 | |
Помогаю со студенческими работами здесь
4
Boost pre build vs cmake find
Boost начало работы: Undefined reference to `boost::system::generic_category() ' Boost Log - undefined reference to `boost::system::system_category()' Использование boost и boost.build с несколькими компиляторами Метапрограммирование в boost::proto (boost::spirit) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |