undefined reference to' boost :: system :: system_category()'

时间:2016-10-15 17:59:40

标签: c++ ubuntu boost

我正在尝试编译一个library,它具有作为依赖项的提升。用cmake编译时我收到以下错误:

  

../ libdasp / libdasp.so:错误:未定义引用   '升压::系统:: system_category()' ../libdasp/libdasp.so:error:   未定义引用" boost :: system :: generic_category()'

我已经使用我的ubuntu 12.04计算机上的this page上的说明手动安装了boost 1.62。为了避免任何与路径相关的不一致,我使用apt删除了默认的libboost-dev(1.48)并将新的boost安装到/ usr。

我在stackoverflow上寻找类似的问题,他们要求添加-lboost_system或类似的东西。但是我无法理解当其余文件使用同一个库成功编译时,我怎么能强制cmake查找这个特定的库(表明我的boost安装没有缺陷)。提供错误的CMakeLists文件是here

我执行了以下命令

  

找到boost_system

,输出

  

/usr/lib/libboost_system.a

     

/usr/lib/libboost_system.so

     

/usr/lib/libboost_system.so.1.46.1

任何答案或指示都会非常有用。

1 个答案:

答案 0 :(得分:3)

尝试:

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