链接到boost :: thread失败

时间:2014-03-06 11:34:03

标签: c++ boost cmake linker-errors

我正在尝试安装名为mgiza的程序。它用CMake编译并需要一些boost库。 我使用了命令

cmake .
make

当我运行'make'时,我收到以下错误:

d4norm.cxx:(.text+0x95b): undefined reference to `boost::system::generic_category()'

等。我在cmakelists.txt中插入了以下行:

FIND_PACKAGE( Boost 1.41 COMPONENTS system)

它起作用了,因为可以编译更多文件并且上面的警告消失了,但是我收到了另一个警告:

main.cpp:(.text+0x7174): undefined reference to `boost::thread::hardware_concurrency()'

虽然我已经在cmakelists中有了FIND_PACKAGE(Boost 1.41 COMPONENTS线程)。 我做错了什么?

1 个答案:

答案 0 :(得分:4)

您还需要搜索线程组件:

find_package(Boost 1.41 COMPONENTS thread system)

在较新版本的Boost.Thread中,您还应链接到Boost.Chrono

find_package(Boost COMPONENTS thread chrono system)

然后,您还需要将可执行文件链接到它并添加包含:

# Check if everything worked out
if(Boost_FOUND)
  add_executable(main main.cpp) # your executable or library or whatever
  target_link_libraries(main ${Boost_LIBRARIES})
  target_include_directories(main ${Boost_INCLUDE_DIRS})
else()
  # panic
endif()