我查过并发现很多人都有同样的问题,但没有解决方案。CMake和Boost
我使用的CMake来生成MinGW的Makefile文件和编译我得到一个错误,当:
CMakeFiles\boosttest.dir/objects.a(main.cpp.obj):main.cpp:(.text+0x5e): undefined reference to `_imp___ZN5boost6thread4joinEv'
CMakeFiles\boosttest.dir/objects.a(main.cpp.obj):main.cpp:(.text+0x71): undefined reference to `_imp___ZN5boost6threadD1Ev'
CMakeFiles\boosttest.dir/objects.a(main.cpp.obj):main.cpp:(.text+0x88): undefined reference to `_imp___ZN5boost6threadD1Ev'
这似乎是一个链接的问题,我得到它。我的CMake的配置是:
project(boosttest)
cmake_minimum_required(VERSION 2.6)
include_directories(${boosttest_SOURCE_DIR}/include c:/boost_1_48_0/)
link_directories(c:/boost_1_48_0/lib)
file(GLOB_RECURSE cppFiles src/*.cpp)
add_executable(boosttest ${cppFiles})
target_link_libraries(boosttest libboost_thread-mgw46-mt-1_48.a)
首先我尝试使用find_package(Boost COMPONENTS thread)
,它正在以同样的方式,所以我想尝试手动做到这一点,我仍然得到同样的错误。
对此有何见解?
我已经编译它为mingw使用bjam和作为一个静态链接。也试过:
add_library(imp_libboost_thread STATIC IMPORTED)
set_property(TARGET imp_libboost_thread PROPERTY IMPORTED_LOCATION c:/boost_1_48_0/lib/libboost_thread-mgw46-mt-1_48.a)
target_link_libraries(boosttest imp_libboost_thread)
而且我仍然得到相同的错误消息。
添加BOOST_THREAD_USE_LIB为我修好了。在过去的一个小时左右,我一直在为这件事挠头。 – CadentOrange 2012-05-09 09:33:30