Allow building against a shared libgmock (an option in gtest-1.8.0).

This commit is contained in:
Bill Nottingham
2018-04-03 21:59:50 -04:00
parent 6c6194001a
commit 0a3f2dd3ef
2 changed files with 21 additions and 12 deletions

View File

@@ -149,6 +149,8 @@ FUNCTION(GNC_GTEST_CONFIGURE)
FIND_PATH(GMOCK_INCLUDE_DIR gmock/gmock.h
PATHS ${GMOCK_ROOT}/include /usr/include)
unset(GMOCK_SRC_DIR CACHE)
FIND_LIBRARY(GMOCK_SHARED_LIB gmock)
FIND_LIBRARY(GMOCK_MAIN_LIB gmock_main)
FIND_PATH(GMOCK_SRC_DIR src/gmock-all.cc
PATHS ${GMOCK_ROOT} /usr/src/gmock)
if (GMOCK_SRC_DIR)
@@ -160,10 +162,15 @@ FUNCTION(GNC_GTEST_CONFIGURE)
SET(GMOCK_MAIN_SRC_DIR "${GMOCK_SRC_DIR}")
endif()
endif()
if (GMOCK_INCLUDE_DIR AND GMOCK_SRC_DIR)
if (GMOCK_INCLUDE_DIR AND (GMOCK_SHARED_LIB OR GMOCK_SRC_DIR))
SET(GMOCK_FOUND YES PARENT_SCOPE)
SET(GMOCK_SRC "${GMOCK_MAIN_SRC_DIR}/gmock-all.cc" PARENT_SCOPE)
SET(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgmock.a" PARENT_SCOPE)
IF(GMOCK_SHARED_LIB)
SET(GMOCK_LIB "${GMOCK_SHARED_LIB};${GMOCK_MAIN_LIB}" PARENT_SCOPE)
UNSET(GMOCK_SRC_DIR CACHE)
ELSE()
SET(GMOCK_SRC "${GMOCK_MAIN_SRC_DIR}/gmock-all.cc" PARENT_SCOPE)
SET(GMOCK_LIB "${CMAKE_BINARY_DIR}/common/test-core/libgmock.a" PARENT_SCOPE)
ENDIF()
ELSE()
MESSAGE(FATAL_ERROR "GMOCK not found. Please install it or set GMOCK_ROOT")
ENDIF()

View File

@@ -75,13 +75,15 @@ IF(NOT GTEST_SHARED_LIB)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(gtest PUBLIC ${GTEST_INCLUDE_DIR} ${GTEST_SRC_DIR})
ENDIF()
SET (lib_gmock_SOURCES ${GMOCK_SRC})
ADD_LIBRARY(gmock STATIC ${lib_gmock_SOURCES})
IF (APPLE)
TARGET_COMPILE_OPTIONS(gmock PRIVATE -Wno-missing-prototypes)
ELSE()
TARGET_COMPILE_OPTIONS(gmock PRIVATE -Wno-missing-declarations)
IF(NOT GMOCK_SHARED_LIB)
SET (lib_gmock_SOURCES ${GMOCK_SRC})
ADD_LIBRARY(gmock STATIC ${lib_gmock_SOURCES})
IF (APPLE)
TARGET_COMPILE_OPTIONS(gmock PRIVATE -Wno-missing-prototypes)
ELSE()
TARGET_COMPILE_OPTIONS(gmock PRIVATE -Wno-missing-declarations)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(gmock PUBLIC
${GTEST_INCLUDE_DIR} ${GTEST_SRC_DIR}
${GMOCK_INCLUDE_DIR} ${GMOCK_SRC_DIR})
ENDIF()
TARGET_INCLUDE_DIRECTORIES(gmock PUBLIC
${GTEST_INCLUDE_DIR} ${GTEST_SRC_DIR}
${GMOCK_INCLUDE_DIR} ${GMOCK_SRC_DIR})