Как прилинковать нестандартную версию boost через cmake (не хедеронли часть).

184
23 августа 2018, 09:00

Есть проект под arm который компилируется и собирается на х86ой машине (кросскомпиляция). Есть версия библиотеки boost собранная под arm. С boost мне нужен asio. Я использую CMake но команда find_package мне не подходит т. к. она подцепит вариант который на машине. Я пытаюсь подключить библиотеку прописав пути напрямую но получаю ошибку:

error: undefined reference to `boost::system::generic_category()'

Cmake скрипт:

cmake_minimum_required(VERSION 3.1)
project(AAA)
add_executable(
    ${PROJECT_NAME} ${SRC_LIST} 
    "main.cpp" 
    )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -pthread ") #-lboost_system
# Подключение Boost
#set(Boost_USE_STATIC_LIBS OFF)       # Использует статический вариант библиотеки ()
#set(Boost_USE_MULTITHREADED OFF)    # Используем только один поток(нам нужно что бы весь asio крутился на одном ядре). 
include_directories("/home/mrfieldy/linaro_work/target_lib/boost_1_67_0/")
link_directories("/home/mrfieldy/linaro_work/target_lib/boost_1_67_0/libs/")
target_link_libraries(AAA "/home/mrfieldy/linaro_work/target_lib/boost_1_67_0/libs/")

Cmake 3.1; GСС 7.2; boost 1.67; Kubuntu 18.04; IDE Qt Creator 4.6.2.

Answer 1

target_link_libraries принимает библиотеки (файлы) в качестве аргументов, а не директории. Поэтому передавайте в неё правильные файлы библиотек.

Ну а если делать по уму, то нужно использовать find_package, предварительно выставив BOOST_ROOT в тот путь, где требуемый boost находится.

READ ALSO
Как сделать метод универсальным?

Как сделать метод универсальным?

Пишу метод упрощающий чтение кода и никак не могу сделать его так, что бы он был универсальный

187
Не работает socket receive

Не работает socket receive

Пробую сделать бота на java для торгового терминала quikДля того чтобы передавать информацию из квика в java сделал сокет клиент на lua, вот его код:

182
Сигнатуры методов HashMap

Сигнатуры методов HashMap

Почему метод put принимает на вход key параметр типа K:

162
Вывод данных в ReclerView Firebase

Вывод данных в ReclerView Firebase

Есть база данных Firebase с такой структурой:

158