[CMake] Linking against boost_Test fails

Oswin Krause oswinKrause at web.de
Mon Jun 21 10:53:30 EDT 2010


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?

Greetings,
Oswin Krause


More information about the CMake mailing list