Skip to content

Commit a41565d

Browse files
authored
Merge pull request #249 from canmor/main
Add support for latest GoogleTest and Boost
2 parents c0c2591 + 1cdda65 commit a41565d

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

CMakeLists.txt

+21-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,17 @@ set(CUKE_ENABLE_SANITIZER "OFF" CACHE STRING "Sanitizer to use for checkin
2626
set_property(CACHE CUKE_ENABLE_SANITIZER PROPERTY STRINGS OFF "address" "thread" "undefined")
2727
option(CUKE_TESTS_VALGRIND "Enable tests within Valgrind" OFF)
2828
set(GMOCK_SRC_DIR "" CACHE STRING "Google Mock framework sources path (otherwise downloaded)")
29-
set(GMOCK_VER "1.7.0" CACHE STRING "Google Mock framework version to be used")
29+
set(GMOCK_VER "1.11.0" CACHE STRING "Google Mock framework version to be used")
30+
31+
# according to: https://github.com./google/googletest/tree/release-1.10.0#18x-release
32+
# the 1.8.x is the last release that works with pre-C++11 compilers.
33+
if(GMOCK_VER VERSION_GREATER_EQUAL "1.9.0")
34+
if(NOT DEFINED CMAKE_CXX_STANDARD)
35+
set(CMAKE_CXX_STANDARD 11)
36+
elseif(CMAKE_CXX_STANDARD LESS 11)
37+
message(FATAL_ERROR "C++11 (above) is required by googletest version: ${GMOCK_VER}")
38+
endif()
39+
endif()
3040

3141
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/modules)
3242

@@ -126,6 +136,16 @@ else()
126136
find_package(Boost ${BOOST_MIN_VERSION} COMPONENTS ${CUKE_CORE_BOOST_LIBS} REQUIRED)
127137
endif()
128138

139+
# according to: https://www.boost.org/users/history/version_1_76_0.html
140+
# C++11 (above) is required by boost::regex since v1.76.0
141+
if(Boost_VERSION VERSION_GREATER_EQUAL "1.76.0")
142+
if(NOT DEFINED CMAKE_CXX_STANDARD)
143+
set(CMAKE_CXX_STANDARD 11)
144+
elseif(CMAKE_CXX_STANDARD LESS 11)
145+
message(FATAL_ERROR "C++11 (above) is required by boost::regex version: ${Boost_VERSION}")
146+
endif()
147+
endif()
148+
129149
# Create import targets for CMake versions older than 3.5 (actually older FindBoost.cmake)
130150
if(Boost_USE_STATIC_LIBS)
131151
set(LIBRARY_TYPE STATIC)

cmake/modules/FindGMock.cmake

+11-4
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,17 @@ if(NOT (${GMOCK_LIBRARY_EXISTS} AND ${GTEST_LIBRARY_EXISTS}))
342342
mark_as_advanced(GMOCK_INCLUDE_DIR)
343343
else() #1.8.0
344344
set(GMOCK_BIN_DIR "${GMOCK_ROOT}/src/gmock-build")
345-
set(GTEST_LIBRARY "${GMOCK_BIN_DIR}/googlemock/gtest/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
346-
set(GTEST_MAIN_LIBRARY "${GMOCK_BIN_DIR}/googlemock/gtest/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
347-
set(GMOCK_LIBRARY "${GMOCK_BIN_DIR}/googlemock/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}")
348-
set(GMOCK_MAIN_LIBRARY "${GMOCK_BIN_DIR}/googlemock/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
345+
if("${GMOCK_VER}" STREQUAL "1.8.0" OR "${GMOCK_VER}" STREQUAL "1.8.1")
346+
set(GTEST_LIBRARY "${GMOCK_BIN_DIR}/googlemock/gtest/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
347+
set(GTEST_MAIN_LIBRARY "${GMOCK_BIN_DIR}/googlemock/gtest/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
348+
set(GMOCK_LIBRARY "${GMOCK_BIN_DIR}/googlemock/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}")
349+
set(GMOCK_MAIN_LIBRARY "${GMOCK_BIN_DIR}/googlemock/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
350+
else() # newer version get gmock and gtest generate into same lib folder
351+
set(GTEST_LIBRARY "${GMOCK_BIN_DIR}/lib/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
352+
set(GTEST_MAIN_LIBRARY "${GMOCK_BIN_DIR}/lib/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
353+
set(GMOCK_LIBRARY "${GMOCK_BIN_DIR}/lib/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}")
354+
set(GMOCK_MAIN_LIBRARY "${GMOCK_BIN_DIR}/lib/${CMAKE_CFG_INTDIR}/${GTEST_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
355+
endif()
349356
mark_as_advanced(GTEST_LIBRARY)
350357
mark_as_advanced(GTEST_MAIN_LIBRARY)
351358
mark_as_advanced(GMOCK_LIBRARY)

include/cucumber-cpp/internal/drivers/DriverSelector.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#if defined(GTEST_INCLUDE_GTEST_GTEST_H_)
1+
#if defined(GTEST_INCLUDE_GTEST_GTEST_H_) || defined(GOOGLETEST_INCLUDE_GTEST_GTEST_H_)
22
#include "GTestDriver.hpp"
33
#elif defined(BOOST_TEST_CASE)
44
#include "BoostDriver.hpp"

0 commit comments

Comments
 (0)