[CMake] Makefile to CMakeLists.txt (GTEST)
Ben Medina
ben.medina at gmail.com
Wed Dec 1 13:43:50 EST 2010
Note that recent versions of gtest come with a CMakeLists.txt, so you
can just use add_subdirectory on the gtest source tree.
- Ben
On Wed, Dec 1, 2010 at 7:59 AM, Kevyn-Alexandre Paré
<kapare at rogue-research.com> wrote:
> Philip,
>
> Thx for the reply. Neither of these solutions change a thing.
>
> I try to play with ADD_CUSTOM_TARGET but same error...
>
> ADD_CUSTOM_TARGET(RRThread.o ALL COMMAND ${CMAKE_C_COMPILER} -I
> ${MICRONTRACKER_COMMON_PATH} -I${GTEST_HEADER_PATH} -lpthread -c
> ${MICRONTRACKER_COMMON_PATH}RRThread.c
> ${UNIT_TEST_PATH}common/UT_RRThread.cc)
>
> ADD_CUSTOM_TARGET(UT_RRThread ALL COMMAND ${CMAKE_CXX_COMPILER} -I
> ${MICRONTRACKER_COMMON_PATH} -I${GTEST_HEADER_PATH} -lpthread RRThread.o
> UT_RRThread.o ${GTEST_LIB_PATH}gtest.a ${GTEST_LIB_PATH}gtest_main.a -o
> UT_RRThread)
>
> Result:
> UT_RRThread.o: In function `thread_proc(void*)':
> UT_RRThread.cc:(.text+0x28): undefined reference to `exitThread()'
> ...
>
> I pretty sure that I'm missing little detail. How can I implicitly add
> dependency to the object during the linking?
>
> Regards
>
> --
> Kevyn-Alexandre Paré
>
>
> On Mon, 2010-11-29 at 18:17 -0500, Philip Lowman wrote:
>> Try adding the "gtest.a" library as well. Also, order does matter
>> when you are linking static libraries so you might need to play with
>> the ordering.
>>
>>
>> Also, when you get some time, have a look at FindGTest.cmake. It may
>> help you simplify adding your tests.
>>
>> On Mon, Nov 29, 2010 at 5:55 PM, Kevyn-Alexandre Paré
>> <kapare at rogue-research.com> wrote:
>> Hi,
>>
>> /// -> What I trying to do is to compile my unit test with
>> google test
>> with cmake from a working Makefile.
>>
>> /// -> Here the Makefile::::
>>
>> RRThread.o : $(USER_DIR)/RRThread.c $(USER_DIR)/RRThread.h
>> $(GTEST_HEADERS)
>> $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/RRThread.c
>>
>> UT_RRThread.o : $(UNITTEST_DIR)/UT_RRThread.cc \
>> $(USER_DIR)/RRThread.h $(GTEST_HEADERS)#
>> $(CXX) $(CPPFLAGS) $(CXXFLAGS) -I$(USER_DIR) -c
>> $(UNITTEST_DIR)/UT_RRThread.cc
>>
>> UT_RRThread : RRThread.o UT_RRThread.o gtest_main.a
>> $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
>>
>>
>> /// -> Here how I thought of doing it with CMakeLists.txt:::
>>
>> INCLUDE_DIRECTORIES(${GTEST_HEADER} ${USER_DIR})
>>
>> ADD_EXECUTABLE(UT ${USER_DIR}RRThread.c
>> ${UNIT_TEST_PATH}UT_RRThread.cc)
>>
>> TARGET_LINK_LIBRARIES(UT pthread
>> ${GTEST_LIB_PATH}gtest_main.a)
>>
>> /// -> My result:
>>
>> Linking CXX executable UT
>> /usr/bin/cmake -E cmake_link_script CMakeFiles/UT.dir/link.txt
>> --verbose=1
>> /usr/bin/c++ CMakeFiles/UT.dir/common/RRThread.c.o
>> CMakeFiles/UT.dir/UnitTests/common/UT_RRThread.cc.o -o UT
>> -rdynamic
>> -lpthread /home/andromeda/rogue-research/3rdParty/gtest/trunk/Release/lib/gtest_main.a
>> CMakeFiles/UT.dir/UnitTests/common/UT_RRThread.cc.o: In
>> function
>> `thread_proc(void*)':
>> UT_RRThread.cc:(.text+0x28): undefined reference to
>> `exitThread()'
>>
>>
>> /// -> My question and my problem is:
>> Since I'm including the USER_DIR with INCLUDE_DIRECTORIES why
>> is it
>> complaining about not finding reference that is in that header
>> file?
>>
>>
>> Best Regards,
>>
>> --
>> Kevyn-Alexandre Paré
>>
>> _______________________________________________
>> 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
>>
>>
>>
>> --
>> Philip Lowman
>>
>
>
> _______________________________________________
> 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
More information about the CMake
mailing list