diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ddffe1..d7d6ecd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,9 @@ IF(WIN32) ADD_DEFINITIONS(-DNOMINMAX) ENDIF(WIN32) + +INCLUDE(ExternalProject) + # ******************* # Compilation options # ******************* @@ -160,11 +163,23 @@ ADD_SUBDIRECTORY(src) IF(EXISTS "${CMAKE_SOURCE_DIR}/googletest/CMakeLists.txt") # Enable tests and add the test directory MESSAGE(STATUS "Tests have been enabled") - SET(gtest_force_shared_crt ON CACHE BOOL "Always use /MD") - SET(BUILD_GMOCK OFF) - SET(BUILD_GTEST ON) + SET(GOOGLETEST_ROOT ${CMAKE_SOURCE_DIR}/googletest) + SET(GOOGLETEST_INCLUDE ${GOOGLETEST_ROOT}/googletest/include) + SET(GOOGLETEST_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/googletest) + SET(GOOGLETEST_LIBRARY ${GOOGLETEST_BINARY_DIR}/googletest) + + ExternalProject_Add( + googletest + DOWNLOAD_COMMAND "" + SOURCE_DIR ${GOOGLETEST_ROOT} + BINARY_DIR ${GOOGLETEST_BINARY_DIR} + CMAKE_CACHE_ARGS "-DBUILD_GTEST:bool=ON" "-DBUILD_GMOCK:bool=OFF" + "-Dgtest_force_shared_crt:bool=ON" + INSTALL_COMMAND "" + ) + # Make sure we build googletest before anything else + ADD_DEPENDENCIES(tins googletest) ENABLE_TESTING() - ADD_SUBDIRECTORY(googletest) ADD_SUBDIRECTORY(tests) ELSE() MESSAGE(STATUS "googletest git submodule is absent. Run `git submodule init && git submodule update` to get it") diff --git a/tests/src/CMakeLists.txt b/tests/src/CMakeLists.txt index 312fb86..1b419b0 100644 --- a/tests/src/CMakeLists.txt +++ b/tests/src/CMakeLists.txt @@ -2,7 +2,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include/tins/ ../include/ - ${gtest_SOURCE_DIR}/include + ${GOOGLETEST_INCLUDE} ${PCAP_INCLUDE_DIR} ) @@ -10,7 +10,7 @@ INCLUDE_DIRECTORIES( FIND_PACKAGE(Threads REQUIRED) LINK_DIRECTORIES( - ${gtest_BINARY_DIR} + ${GOOGLETEST_LIBRARY} ) # Link against GoogleTest, libtins and pthread. # Pthread is required by GoogleTest @@ -212,4 +212,3 @@ ADD_TEST(TCPStream TCPStreamTest) ADD_TEST(UDP UDPTest) ADD_TEST(Utils UtilsTest) ADD_TEST(WEPDecrypt WEPDecryptTest) -