"googlemock/git@developer.sourcefind.cn:yangql/googletest.git" did not exist on "296c9d29b16375c30781bb9109f3159a9ddbba9c"
Commit 38efa38f authored by zhanyong.wan's avatar zhanyong.wan
Browse files

Uses FindThreads to set the proper link flag when using threads (by Manuel Klimek).

parent 1d6df4be
......@@ -17,7 +17,8 @@
# CMake files in this project can refer to the root source directory
# as ${gtest_SOURCE_DIR} and to the root binary directory as
# ${gtest_BINARY_DIR}.
project(gtest CXX)
# Language "C" is required for find_package(Threads).
project(gtest CXX C)
cmake_minimum_required(VERSION 2.8)
# Where gtest's .h files can be found.
......@@ -114,25 +115,38 @@ option(build_all_gtest_tests "Build all of gtest's own tests." OFF)
enable_testing()
# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
include(FindPythonInterp)
find_package(PythonInterp)
############################################################
# C++ tests built with standard compiler flags.
# cxx_test(name lib srcs...)
# cxx_test_with_flags(name cxx_flags libs srcs...)
#
# creates a named test target that depends on the given lib and is
# built from the given source files. test/name.cc is implicitly
# included in the source file list.
function(cxx_test name lib)
add_executable(${name} test/${name}.cc ${ARGN})
# creates a named C++ test that depends on the given libs and is built
# from the given source files with the given compiler flags.
function(cxx_test_with_flags name cxx_flags libs)
add_executable(${name} ${ARGN})
set_target_properties(${name}
PROPERTIES
COMPILE_FLAGS "${cxx_default}")
target_link_libraries(${name} ${lib})
COMPILE_FLAGS "${cxx_flags}")
# To support mixing linking in static and dynamic libraries, link each
# library in with an extra call to target_link_libraries.
foreach (lib "${libs}")
target_link_libraries(${name} ${lib})
endforeach()
add_test(${name} ${name})
endfunction()
# cxx_test(name libs srcs...)
#
# creates a named test target that depends on the given libs and is
# built from the given source files. Unlike cxx_test_with_flags,
# test/name.cc is already implicitly included in the source file list.
function(cxx_test name libs)
cxx_test_with_flags("${name}" "${cxx_default}" "${libs}"
"test/${name}.cc" ${ARGN})
endfunction()
cxx_test(gtest_unittest gtest_main)
if (${build_all_gtest_tests})
......@@ -163,35 +177,15 @@ endif()
############################################################
# C++ tests built with non-standard compiler flags.
# TODO(wan@google.com): use FindThreads to set the flags for using threads.
if (MSVC)
set(cxx_no_exception "${cxx_base} -D_HAS_EXCEPTIONS=0")
set(cxx_no_rtti "${cxx_default} -GR-")
set(cxx_use_threads "${cxx_default}")
set(link_use_threads "")
else()
set(cxx_no_exception "${cxx_base} -fno-exceptions")
set(cxx_no_rtti "${cxx_default} -fno-rtti -DGTEST_HAS_RTTI=0")
set(cxx_use_threads "${cxx_default} -pthread")
set(link_use_threads "-pthread")
endif()
set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1")
# cxx_test_with_flags(name cxx_flags lib srcs...)
#
# creates a named C++ test that depends on the given lib and is built
# from the given source files with the given compiler flags. Unlike
# cxx_test(), test/name.cc is NOT implicitly included in the source
# file list.
function(cxx_test_with_flags name cxx_flags lib)
add_executable(${name} ${ARGN})
set_target_properties(${name}
PROPERTIES
COMPILE_FLAGS "${cxx_flags}")
target_link_libraries(${name} ${lib})
add_test(${name} ${name})
endfunction()
if (${build_all_gtest_tests})
cxx_library(gtest_no_exception "${cxx_no_exception}"
src/gtest-all.cc)
......@@ -200,11 +194,9 @@ if (${build_all_gtest_tests})
cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
src/gtest-all.cc src/gtest_main.cc)
cxx_test_with_flags(gtest-death-test_test "${cxx_use_threads}"
gtest_main test/gtest-death-test_test.cc)
set_target_properties(gtest-death-test_test
PROPERTIES
LINK_FLAGS "${link_use_threads}")
find_package(Threads) # Defines CMAKE_THREAD_LIBS_INIT.
cxx_test_with_flags(gtest-death-test_test "${cxx_default}"
"gtest_main;${CMAKE_THREAD_LIBS_INIT}" test/gtest-death-test_test.cc)
cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}"
gtest_main_no_rtti test/gtest_unittest.cc)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment