Ho cercato e scoperto che molte persone hanno lo stesso problema, ma non esiste alcuna soluzione.CMake and Boost
sto usando CMake per generare Makefile per MinGW e durante la compilazione sto ottenendo un errore:
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'
questo sembra essere un problema di collegamento, ho capito. La mia configurazione è 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)
Per prima cosa ho provato ad utilizzare find_package(Boost COMPONENTS thread)
e che stava lavorando allo stesso modo, così ho pensato di provare a farlo manualmente e ho ancora ottenere lo stesso errore.
Eventuali approfondimenti su questo?
L'ho compilato per mingw usando bjam e come collegamento statico. Anche provato a fare:
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)
E ho ancora gli stessi messaggi di errore.
L'aggiunta di BOOST_THREAD_USE_LIB l'ha corretta per me. Mi sono grattato la testa per quest'ultima ora. – CadentOrange