diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2019-05-29 14:55:17 +0200 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2019-05-29 13:46:25 +0000 |
commit | f50859e856b911ba0667fc9aaa5df4c8882f8679 (patch) | |
tree | 2ec84f115cf26374c6c0cd57fd257d758ca95f6e /cmake | |
parent | 0bbc5ef57465b94c63fed1cf8255a9b2a07e981c (diff) | |
download | qt-creator-f50859e856b911ba0667fc9aaa5df4c8882f8679.tar.gz |
CMake build: Add unittest CMake build files
On MinGW 8.1 I get the following after running ctest -j 40
99% tests passed, 35 tests failed out of 2631
Change-Id: I2c3ce7940b036e52ef393feab5837886355e7b5a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindGoogleBenchmark.cmake | 82 | ||||
-rw-r--r-- | cmake/FindGoogletest.cmake | 102 |
2 files changed, 184 insertions, 0 deletions
diff --git a/cmake/FindGoogleBenchmark.cmake b/cmake/FindGoogleBenchmark.cmake new file mode 100644 index 0000000000..ce2cf3f66d --- /dev/null +++ b/cmake/FindGoogleBenchmark.cmake @@ -0,0 +1,82 @@ +#.rst: +# FindGoogleBenchmark +# ----------------- +# +# Try to locate the GoogleBenchmark source files, and then build them as a +# static library. +# +# The ``GOOGLEBENCHMARK_DIR`` (CMake or Environment) variable should be used +# to pinpoint the GoogleBenchmark source files. +# +# If found, this will define the following variables: +# +# ``GoogleBenchmark_FOUND`` +# True if the GoogleBenchmark source package has been found. +# +# ``GoogleBenchmark`` +# Target compiled as static library. +# + +find_path(GOOGLE_BENCHMARK_INCLUDE_DIR + NAMES benchmark/benchmark.h + PATH_SUFFIXES include + HINTS + "${GOOGLEBENCHMARK_DIR}" ENV GOOGLEBENCHMARK_DIR + "${CMAKE_SOURCE_DIR}/../benchmark" + "${CMAKE_SOURCE_DIR}/../../benchmark" +) + +find_path(GOOGLE_BENCHMARK_SRC_DIR + NAMES benchmark.cc + PATH_SUFFIXES src + HINTS + "${GOOGLEBENCHMARK_DIR}" ENV GOOGLEBENCHMARK_DIR + "${CMAKE_SOURCE_DIR}/../benchmark" + "${CMAKE_SOURCE_DIR}/../../benchmark" +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GoogleBenchmark + DEFAULT_MSG + GOOGLE_BENCHMARK_INCLUDE_DIR GOOGLE_BENCHMARK_SRC_DIR +) + +if(GoogleBenchmark_FOUND AND NOT TARGET GoogleBenchmark) + add_library(GoogleBenchmark STATIC + "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_api_internal.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_name.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_register.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/benchmark_runner.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/colorprint.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/commandlineflags.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/complexity.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/console_reporter.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/counter.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/csv_reporter.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/json_reporter.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/reporter.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/sleep.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/statistics.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/string_util.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/sysinfo.cc" + "${GOOGLE_BENCHMARK_SRC_DIR}/timers.cc" + ) + target_include_directories(GoogleBenchmark + PUBLIC + "${GOOGLE_BENCHMARK_INCLUDE_DIR}" + PRIVATE + "${GOOGLE_BENCHMARK_SRC_DIR}" + ) + target_compile_definitions(GoogleBenchmark PRIVATE HAVE_STD_REGEX WITH_BENCHMARKS) + if (WIN32) + target_link_libraries(GoogleBenchmark PRIVATE shlwapi) + endif() +endif() + +mark_as_advanced(GOOGLE_BENCHMARK_INCLUDE_DIR GOOGLE_BENCHMARK_SRC_DIR) + +include(FeatureSummary) +set_package_properties(GoogleBenchmark PROPERTIES + URL "https://github.com/google/benchmark" + DESCRIPTION "A microbenchmark support library") diff --git a/cmake/FindGoogletest.cmake b/cmake/FindGoogletest.cmake new file mode 100644 index 0000000000..b73f7680fc --- /dev/null +++ b/cmake/FindGoogletest.cmake @@ -0,0 +1,102 @@ +#.rst: +# FindGoogletest +# ----------------- +# +# Try to locate the Googletest source files, and then build them as a +# static library. +# +# The ``GOOGLETEST_DIR`` (CMake or Environment) variable should be used +# to pinpoint the Googletest source files. +# +# If found, this will define the following variables: +# +# ``Googletest_FOUND`` +# True if the Googletest source package has been found. +# +# ``Googletest`` +# Target compiled as static library. +# + +find_path(GOOGLE_TEST_INCLUDE_DIR + NAMES gtest/gtest.h + PATH_SUFFIXES googletest/include + HINTS + "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR + "${CMAKE_SOURCE_DIR}/../googletest" + "${CMAKE_SOURCE_DIR}/../../googletest" +) + +find_path(GOOGLE_TEST_SRC_ALL + NAMES gtest-all.cc + PATH_SUFFIXES googletest/src + HINTS + "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR + "${CMAKE_SOURCE_DIR}/../googletest" + "${CMAKE_SOURCE_DIR}/../../googletest" +) + + +find_path(GOOGLE_MOCK_INCLUDE_DIR + NAMES gmock/gmock.h + PATH_SUFFIXES googlemock/include + HINTS + "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR + "${CMAKE_SOURCE_DIR}/../googletest" + "${CMAKE_SOURCE_DIR}/../../googletest" +) + +find_path(GOOGLE_MOCK_SRC_ALL + NAMES gmock-all.cc + PATH_SUFFIXES googlemock/src + HINTS + "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR + "${CMAKE_SOURCE_DIR}/../googletest" + "${CMAKE_SOURCE_DIR}/../../googletest" +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Googletest + DEFAULT_MSG + GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR + GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL +) + +if(Googletest_FOUND AND NOT TARGET Googletest) + add_library(Googletest STATIC + "${GOOGLE_TEST_SRC_ALL}/gtest-all.cc" + "${GOOGLE_MOCK_SRC_ALL}/gmock-all.cc" + ) + target_include_directories(Googletest + PUBLIC + "${GOOGLE_TEST_INCLUDE_DIR}" + "${GOOGLE_MOCK_INCLUDE_DIR}" + PRIVATE + "${GOOGLE_TEST_SRC_ALL}/.." + "${GOOGLE_MOCK_SRC_ALL}/.." + ) + target_compile_definitions(Googletest + PRIVATE + GTEST_HAS_STD_INITIALIZER_LIST_ + GTEST_LANG_CXX11 + GTEST_HAS_STD_TUPLE_ + GTEST_HAS_STD_TYPE_TRAITS_ + GTEST_HAS_STD_FUNCTION_ + GTEST_HAS_RTTI + GTEST_HAS_STD_BEGIN_AND_END_ + GTEST_HAS_STD_UNIQUE_PTR_ + GTEST_HAS_EXCEPTIONS + GTEST_HAS_STREAM_REDIRECTION + GTEST_HAS_TYPED_TEST + GTEST_HAS_TYPED_TEST_P + GTEST_HAS_PARAM_TEST + GTEST_HAS_DEATH_TEST + ) +endif() + +mark_as_advanced(GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR + GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL) + +include(FeatureSummary) +set_package_properties(Googletest PROPERTIES + URL "https://github.com/google/googletest" + DESCRIPTION "Google Testing and Mocking Framework") |