>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?
Yes, it is exactly this:
g++ cblnsrch.cpp -lboost_test_exec_monitor-mt 
-L/home/oswin/Projekte/Shark/shark-project/branches/SharkReworkBoostRng/Shark/lib/
 -lshark 
-I/home/oswin/Projekte/Shark/shark-project/branches/SharkReworkBoostRng/Shark/include/

But there is  currently no dependency between shark and boost, so the order 
shouldn't make a difference.

>Does SET(LINK_LIBRARIES shark ${Boost_TEST_EXEC_MONITOR_LIBRARY}),
>i.e. shark-before-boost, work?
Same result, unfortunately.

>
>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?
I'm building the tests with the same cmake Script as i'm currently trying to 
build the Tests.
I checked the gcc versions. My gcc was quite old, 4.4.1 and boost was build 
with 4.4.3. But updating gcc to 4.4.5 didn't help either.
And both are now the newest version of my distribution. 
>
>Regards,
>
>Michael
Thanks for your tips.

Regards,
Oswin
_______________________________________________
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