Spaces:
Paused
Paused
| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| if(GTestAlt_FOUND) | |
| return() | |
| endif() | |
| set(find_package_args) | |
| if(GTestAlt_FIND_VERSION) | |
| list(APPEND find_package_args ${GTestAlt_FIND_VERSION}) | |
| endif() | |
| if(GTestAlt_FIND_QUIETLY) | |
| list(APPEND find_package_args QUIET) | |
| endif() | |
| if(CMAKE_VERSION VERSION_LESS 3.23) | |
| list(APPEND find_package_args CONFIG) | |
| endif() | |
| # We can't find shred library version of GoogleTest on Windows with | |
| # Conda's gtest package because it doesn't provide GTestConfig.cmake | |
| # provided by GoogleTest and CMake's built-in FindGTtest.cmake | |
| # doesn't support gtest_dll.dll. | |
| find_package(GTest ${find_package_args}) | |
| set(GTestAlt_FOUND ${GTest_FOUND}) | |
| if(GTestAlt_FOUND AND GTestAlt_NEED_CXX_STANDARD_CHECK) | |
| set(KEEP_CMAKE_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE}) | |
| set(CMAKE_TRY_COMPILE_TARGET_TYPE EXECUTABLE) | |
| set(GTestAlt_CXX_STANDARD_TEST_SOURCE | |
| "${CMAKE_CURRENT_BINARY_DIR}/gtest_cxx_standard_test.cc") | |
| file(WRITE ${GTestAlt_CXX_STANDARD_TEST_SOURCE} | |
| " | |
| #include <string_view> | |
| #include <gtest/gtest.h> | |
| TEST(CXX_STANDARD, MatcherStringView) { | |
| testing::Matcher matcher(std::string_view(\"hello\")); | |
| } | |
| ") | |
| try_compile(GTestAlt_CXX_STANDARD_AVAILABLE ${CMAKE_CURRENT_BINARY_DIR} | |
| SOURCES ${GTestAlt_CXX_STANDARD_TEST_SOURCE} | |
| CMAKE_FLAGS "-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}" | |
| LINK_LIBRARIES GTest::gtest_main | |
| OUTPUT_VARIABLE GTestAlt_CXX_STANDARD_OUTPUT) | |
| set(CMAKE_TRY_COMPILE_TARGET_TYPE ${KEEP_CMAKE_TRY_COMPILE_TARGET_TYPE}) | |
| if(NOT GTestAlt_CXX_STANDARD_AVAILABLE) | |
| message(STATUS "GTest can't be used with C++${CMAKE_CXX_STANDARD}.") | |
| message(STATUS "Use -DGTest_SOURCE=BUNDLED.") | |
| message(STATUS "Output:\n${GTestAlt_CXX_STANDARD_OUTPUT}") | |
| find_package_handle_standard_args(GTestAlt | |
| REQUIRED_VARS GTestAlt_CXX_STANDARD_AVAILABLE) | |
| endif() | |
| target_link_libraries(GTest::gmock INTERFACE GTest::gtest) | |
| target_link_libraries(GTest::gtest_main INTERFACE GTest::gtest) | |
| endif() | |