Commit 073929991e6346becadfc1c4ac116b97f4b95710

Authored by Geoffrey Hunter
1 parent 94d8333d

Added gtest as a CMake external project.

.travis.yml
... ... @@ -14,7 +14,6 @@ addons:
14 14 install:
15 15 - if [ "$CXX" = "g++" ]; then export CXX="g++-5" CC="gcc-5"; fi
16 16 - if [ "$CXX" = "clang++" ]; then export CXX="clang++-3.7" CC="clang-3.7"; fi
17   - - sudo apt install libgtest-dev -y
18 17  
19 18 script:
20 19 - ./tools/build.sh
21 20 \ No newline at end of file
... ...
CMakeLists.txt
... ... @@ -10,7 +10,41 @@ else ()
10 10 message("BUILD_TESTS=FALSE, unit tests will NOT be built.")
11 11 endif ()
12 12  
  13 +#=================================================================================================#
  14 +#========================================= gtest INSTALL =========================================#
  15 +#=================================================================================================#
  16 +
  17 +# Download and unpack googletest at configure time
  18 +configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
  19 +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
  20 + RESULT_VARIABLE result
  21 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
  22 +if(result)
  23 + message(FATAL_ERROR "CMake step for googletest failed: ${result}")
  24 +endif()
  25 +execute_process(COMMAND ${CMAKE_COMMAND} --build .
  26 + RESULT_VARIABLE result
  27 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
  28 +if(result)
  29 + message(FATAL_ERROR "Build step for googletest failed: ${result}")
  30 +endif()
  31 +
  32 +# Prevent overriding the parent project's compiler/linker
  33 +# settings on Windows
  34 +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
13 35  
  36 +# Add googletest directly to our build. This defines
  37 +# the gtest and gtest_main targets.
  38 +add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
  39 + ${CMAKE_BINARY_DIR}/googletest-build
  40 + EXCLUDE_FROM_ALL)
  41 +
  42 +# The gtest/gtest_main targets carry header search path
  43 +# dependencies automatically when using CMake 2.8.11 or
  44 +# later. Otherwise we have to add them here ourselves.
  45 +if (CMAKE_VERSION VERSION_LESS 2.8.11)
  46 + include_directories("${gtest_SOURCE_DIR}/include")
  47 +endif()
14 48  
15 49 #=================================================================================================#
16 50 #========================================= This Project ==========================================#
... ...
CMakeLists.txt.in 0 → 100644
  1 +cmake_minimum_required(VERSION 2.8.2)
  2 +
  3 +project(googletest-download NONE)
  4 +
  5 +include(ExternalProject)
  6 +ExternalProject_Add(googletest
  7 + GIT_REPOSITORY https://github.com/google/googletest.git
  8 + GIT_TAG master
  9 + SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
  10 + BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
  11 + CONFIGURE_COMMAND ""
  12 + BUILD_COMMAND ""
  13 + INSTALL_COMMAND ""
  14 + TEST_COMMAND ""
  15 +)
0 16 \ No newline at end of file
... ...
test/unit/CMakeLists.txt
... ... @@ -10,8 +10,8 @@
10 10  
11 11 enable_testing()
12 12 find_package (Threads)
13   -find_package(GTest REQUIRED)
14   -message("gtest libraries found at ${GTEST_BOTH_LIBRARIES}")
  13 +#find_package(GTest REQUIRED)
  14 +#message("gtest libraries found at ${GTEST_BOTH_LIBRARIES}")
15 15  
16 16 file(GLOB_RECURSE CppLinuxSerialUnitTests_SRC
17 17 "*.cpp"
... ... @@ -21,7 +21,7 @@ file(GLOB_RECURSE CppLinuxSerialUnitTests_SRC
21 21  
22 22 add_executable(CppLinuxSerialUnitTests ${CppLinuxSerialUnitTests_SRC})
23 23  
24   -target_link_libraries(CppLinuxSerialUnitTests LINK_PUBLIC CppLinuxSerial ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
  24 +target_link_libraries(CppLinuxSerialUnitTests LINK_PUBLIC CppLinuxSerial gtest_main ${CMAKE_THREAD_LIBS_INIT})
25 25  
26 26 # The custom target and custom command below allow the unit tests
27 27 # to be run.
... ...