#c #ubuntu #boost
#c #ubuntu #boost
Вопрос:
Я пытаюсь скомпилировать библиотеку, которая имеет boost в качестве зависимости. При компиляции с помощью cmake я получаю следующую ошибку:
../libdasp/libdasp.so: ошибка: неопределенная ссылка на ‘boost:: system:: system_category()’ ../libdasp/libdasp.so: ошибка: неопределенная ссылка на ‘boost:: system:: generic_category()’
Я установил boost 1.62 вручную, используя инструкции на этой странице, на моем компьютере с ubuntu 12.04. Чтобы избежать каких-либо несоответствий, связанных с путями, я удалил libboost-dev по умолчанию (1.48) с помощью apt и установил новый boost в /usr .
Я искал похожие вопросы в stackoverflow, и они просят добавить -lboost_system или что-то подобное. Но я не могу понять, как я могу заставить cmake искать эту конкретную библиотеку, когда остальные файлы успешно компилируются с использованием той же библиотеки (что указывает на то, что моя установка boost не ошибочна). Файл CMakeLists, выдающий ошибку, находится здесь
Я выполнил следующую команду
найдите boost_system
и результат
/usr/lib/libboost_system.a
/usr/lib/libboost_system.so
/usr/lib/libboost_system.so.1.46.1
Любые ответы или указатели были бы действительно полезны.
Ответ №1:
попробуйте:
set(BOOST_ROOT <where you built boost>)
find_package(Boost COMPONENTS program_options signals thread system)
find_package(Threads)
…
target_link_libraries(target ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
target_include_directories(target PUBLIC SYSTEM ${Boost_INCLUDE_DIRS})
удалите эти:
boost_signals
boost_thread
boost_program_options
boost_system
pthread
документация здесь: https://cmake.org/cmake/help/v3.0/module/FindBoost.html