我正在尝试安装名为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线程)。 我做错了什么?
答案 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()