Skip to content

Commit f41f06a

Browse files
committed
Update googletest integration (refs #41)
1 parent 1a7786d commit f41f06a

File tree

263 files changed

+60
-118021
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

263 files changed

+60
-118021
lines changed

cmake/Findgoogletest.cmake

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
# googletest_FOUND
3+
# Target googletest::googletest
4+
5+
include(FindPackageHandleStandardArgs)
6+
7+
find_package(PkgConfig)
8+
9+
# enable MSVC syntax if required
10+
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
11+
set(PKG_CONFIG_ARGN ${PKG_CONFIG_ARGN} "--msvc-syntax")
12+
endif()
13+
14+
pkg_search_module(GMOCK QUIET gmock_main)
15+
16+
find_package_handle_standard_args(googletest REQUIRED_VARS GMOCK_CFLAGS GMOCK_LDFLAGS)
17+
mark_as_advanced(GMOCK_CFLAGS GMOCK_LDFLAGS)
18+
19+
if (googletest_FOUND)
20+
# the linker flags aren't correct for use with target_link_libraries
21+
# example: /libpath:[path]/lib.lib;gmock_main.lib;gmock.lib;gtest.lib
22+
# note that the path arg falsely includes a .lib suffix
23+
# additionally, cmake expects linker flags to start with -
24+
# thus, the leading / has to be replaced
25+
# example result: -libpath:[path]/lib;gmock_main.lib;gmock.lib;gtest.lib
26+
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
27+
string(REGEX REPLACE "(\\/)(libpath[^;]*)(\\.lib)" "-\\2" GMOCK_LDFLAGS "${GMOCK_LDFLAGS}")
28+
endif()
29+
30+
# Create interface library to link against gmock
31+
add_library(googletest::googletest INTERFACE IMPORTED)
32+
33+
target_link_libraries(googletest::googletest
34+
INTERFACE
35+
${GMOCK_LDFLAGS}
36+
)
37+
38+
target_compile_options(googletest::googletest
39+
INTERFACE
40+
${GMOCK_CFLAGS}
41+
)
42+
endif ()

source/tests/CMakeLists.txt

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ set_policy(CMP0028 NEW) # ENABLE CMP0028: Double colon in target name means ALI
1717
set_policy(CMP0054 NEW) # ENABLE CMP0054: Only interpret if() arguments as variables or keywords when unquoted.
1818
set_policy(CMP0042 NEW) # ENABLE CMP0042: MACOSX_RPATH is enabled by default.
1919
set_policy(CMP0063 NEW) # ENABLE CMP0063: Honor visibility properties for all target types.
20-
set_policy(CMP0037 OLD) # DISABLE CMP0037: Target names should not be reserved and should match a validity pattern.
2120

2221
# Compiler settings and options
2322

@@ -41,40 +40,32 @@ function(add_test_without_ctest target)
4140

4241
add_dependencies(test ${target})
4342
add_custom_command(TARGET test POST_BUILD
44-
COMMAND $<TARGET_FILE:${target}> --gtest_output=xml:gtests-${target}.xml)
43+
COMMAND $<TARGET_FILE:${target}> --gtest_output=xml:gtests-${target}.xml
44+
)
4545
endfunction()
4646

47-
# Build gmock
48-
set(gmock_build_tests OFF CACHE BOOL "")
49-
set(gtest_build_samples OFF CACHE BOOL "")
50-
set(gtest_build_tests OFF CACHE BOOL "")
51-
set(gtest_disable_pthreads OFF CACHE BOOL "")
52-
set(gtest_force_shared_crt ON CACHE BOOL "")
53-
set(gtest_hide_internal_symbols OFF CACHE BOOL "")
47+
find_package(googletest QUIET)
5448

55-
add_subdirectory(googletest)
56-
57-
# Create interface library to link against gmock
58-
add_library(gmock-dev INTERFACE)
59-
60-
target_include_directories(gmock-dev
61-
SYSTEM INTERFACE
62-
${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/include
63-
${CMAKE_CURRENT_SOURCE_DIR}/googletest/googlemock/include
64-
)
65-
66-
target_link_libraries(gmock-dev
67-
INTERFACE
68-
gmock
69-
)
49+
if (NOT TARGET googletest::googletest)
50+
message(STATUS "Tests skipped: googletest not found")
51+
return()
52+
endif ()
7053

7154

7255
#
7356
# Target 'test'
7457
#
7558

76-
add_custom_target(test)
77-
set_target_properties(test PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
59+
if (${CMAKE_VERSION} VERSION_LESS "3.11")
60+
set_policy(CMP0037 OLD) # DISABLE CMP0037: Target names should be reserved and should match a validity pattern.
61+
add_custom_target(test)
62+
set_target_properties(test PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
63+
else ()
64+
if (NOT TARGET test)
65+
add_custom_target(test)
66+
set_target_properties(test PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)
67+
endif()
68+
endif ()
7869

7970

8071
#

source/tests/cppfs-test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ target_link_libraries(${target}
6868
PRIVATE
6969
${DEFAULT_LIBRARIES}
7070
${META_PROJECT_NAME}::cppfs
71-
gmock-dev
71+
googletest::googletest
7272
)
7373

7474

source/tests/googletest/.gitignore

Lines changed: 0 additions & 24 deletions
This file was deleted.

source/tests/googletest/.travis.yml

Lines changed: 0 additions & 74 deletions
This file was deleted.

source/tests/googletest/BUILD.bazel

Lines changed: 0 additions & 179 deletions
This file was deleted.

0 commit comments

Comments
 (0)