On 06/21/2010 04:53 PM, Oswin Krause wrote:
> Hello everybody,
> 
> I am currently trying to write a cmake script for my testcases. Previously i 
> used a command like this:
> 
> g++ test.cpp -lboost_test_exec_monitor-mt -L/path/to/lib/ -lshark 
> -I/path/to/include
> 
> and everything worked fine.
> Now i'm using the following macro:
> 
> MACRO( SHARK_ADD_TEST SRC NAME)
> 
>     ADD_EXECUTABLE( ${NAME}
>         ${SRC}
>     )
> 
>     SET( LINK_LIBRARIES
>         ${Boost_TEST_EXEC_MONITOR_LIBRARY}
>         shark
>     )
>     TARGET_LINK_LIBRARIES( ${NAME} ${LINK_LIBRARIES} )
> 
>     ADD_TEST( ${NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Test/${NAME} )
> ENDMACRO()
> SHARK_ADD_TEST( LinAlg/test.cpp LinAlg_test )
> 
> And this creates the following commands:
> /usr/bin/c++ -D_CRT_SECURE_NO_WARNINGS -DBOOST_ALL_DYN_LINK 
> -I/path/to/include -o /some/path/test.o -c path/to/test/test.cpp
> 
> /usr/bin/c++ /some/path/test.o -o /path/to/bin -rdynamic -Wl,-Bstatic 
> -lboost_test_exec_monitor-mt 
> -Wl,-Bdynamic /path/to/lib/libshark.so.2.3.0 -Wl,-rpath,/path/to/lib
> 
> and the error:
> undefined reference to 'boost::unit_test::unit_test_main(bool 
> (*)(),int,char**)'
> 
> So cmake finds the correct library, but seems to link wrong.
> How can i fix that?

Usually, this means you have a reference of your libshark.so.2.3.0 to
libboost_test_exec_monitor-mt.a, but in this case, your manually set up
link line wouldn't work, too, so are you sure that line works as you've
presented it, i.e. with -lboost_test_exec_monitor-mt before -lshark?
Does SET(LINK_LIBRARIES shark ${Boost_TEST_EXEC_MONITOR_LIBRARY}),
i.e. shark-before-boost, work?

Another potential cause for such incidents is the use of different C++
compiler versions, so do you have multiple compilers installed, or do
you have multiple Boost installations, and how does libshark.so.2.3.0
get built?

Regards,

Michael
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to