diff --git a/common/cmake_modules/GncAddTest.cmake b/common/cmake_modules/GncAddTest.cmake index 9c7863cd81..47fc988ceb 100644 --- a/common/cmake_modules/GncAddTest.cmake +++ b/common/cmake_modules/GncAddTest.cmake @@ -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() diff --git a/common/test-core/CMakeLists.txt b/common/test-core/CMakeLists.txt index ce4ed3a4ba..528156598c 100644 --- a/common/test-core/CMakeLists.txt +++ b/common/test-core/CMakeLists.txt @@ -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})