it seems that i am unable to see the obvious. I wanted to use some Boost library features for my project and know i am getting these nice errors all of a sudden:
Linking CXX executable ATFOR CMakeFiles/ATFOR.dir/stdafx.cc.o: In function
__static_initialization_and_destruction_0(int, int)': stdafx.cc:(.text+0x3c): undefined reference to
boost::system::generic_category()' stdafx.cc:(.text+0x48): undefined reference toboost::system::generic_category()' stdafx.cc:(.text+0x54): undefined reference to
boost::system::system_category()' CMakeFiles/ATFOR.dir/Main.cc.o: In function__static_initialization_and_destruction_0(int, int)': Main.cc:(.text+0x29d): undefined reference to
boost::system::generic_category()' Main.cc:(.text+0x2a9): undefined reference toboost::system::generic_category()' Main.cc:(.text+0x2b5): undefined reference to
boost::system::system_category()' collect2: error: ld returned 1 exit status
Here you find my CMakeLists.txt, headers, and main: http://pastie.org/8231509
As you can see, i tried a lot playing around with the CMakeLists and i am pretty sure that i have all headers my project requires. Anyways, i've never had such errors before and i really appreciate any suggestions/solutions about what's wrong here since i don't have any ideas left for now. Thx in advance.
You must explicitly add the system library for it to be linked into your program
find_package(Boost REQUIRED COMPONENTS system)
# ^^^^^^ this :)
This must also be done for other Boost libraries that are built separately (regex, thread, etc.) (see here).
The "system" lib is missing in the linking stage. My config is as follows and it fixes the error:
find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem)
include_directories(... ${Boost_INCLUDE_DIRS})
link_directories(... ${Boost_LIBRARY_DIRS})
target_link_libraries(... ${Boost_LIBRARIES})
Note that using only
find_package(Boost 1.55.0 REQUIRED)
does not work as ${Boost_LIBRARIES}
won't be available then.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With