我正在尝试编译一个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
任何答案或指示都会非常有用。
答案 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