diff --git a/.travis.yml b/.travis.yml index 61f2e98..1af22c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,6 @@ addons: install: - if [ "$CXX" = "g++" ]; then export CXX="g++-5" CC="gcc-5"; fi - if [ "$CXX" = "clang++" ]; then export CXX="clang++-3.7" CC="clang-3.7"; fi - - sudo apt install libgtest-dev -y script: - ./tools/build.sh \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d29aaa..d3aabcd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,41 @@ else () message("BUILD_TESTS=FALSE, unit tests will NOT be built.") endif () +#=================================================================================================# +#========================================= gtest INSTALL =========================================# +#=================================================================================================# + +# Download and unpack googletest at configure time +configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt) +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download ) +if(result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") +endif() +execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download ) +if(result) + message(FATAL_ERROR "Build step for googletest failed: ${result}") +endif() + +# Prevent overriding the parent project's compiler/linker +# settings on Windows +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +# Add googletest directly to our build. This defines +# the gtest and gtest_main targets. +add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src + ${CMAKE_BINARY_DIR}/googletest-build + EXCLUDE_FROM_ALL) + +# The gtest/gtest_main targets carry header search path +# dependencies automatically when using CMake 2.8.11 or +# later. Otherwise we have to add them here ourselves. +if (CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories("${gtest_SOURCE_DIR}/include") +endif() #=================================================================================================# #========================================= This Project ==========================================# diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in new file mode 100644 index 0000000..d60a33e --- /dev/null +++ b/CMakeLists.txt.in @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 2.8.2) + +project(googletest-download NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG master + SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) \ No newline at end of file diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index a84bbf1..fb0aad0 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -10,8 +10,8 @@ enable_testing() find_package (Threads) -find_package(GTest REQUIRED) -message("gtest libraries found at ${GTEST_BOTH_LIBRARIES}") +#find_package(GTest REQUIRED) +#message("gtest libraries found at ${GTEST_BOTH_LIBRARIES}") file(GLOB_RECURSE CppLinuxSerialUnitTests_SRC "*.cpp" @@ -21,7 +21,7 @@ file(GLOB_RECURSE CppLinuxSerialUnitTests_SRC add_executable(CppLinuxSerialUnitTests ${CppLinuxSerialUnitTests_SRC}) -target_link_libraries(CppLinuxSerialUnitTests LINK_PUBLIC CppLinuxSerial ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(CppLinuxSerialUnitTests LINK_PUBLIC CppLinuxSerial gtest_main ${CMAKE_THREAD_LIBS_INIT}) # The custom target and custom command below allow the unit tests # to be run.