From a5d3d003d0192f8d5fd87885f948338c04fc3f85 Mon Sep 17 00:00:00 2001 From: Zak Eckert Date: Fri, 11 Mar 2016 11:23:32 -0500 Subject: [PATCH] FindGTest: Automatically re-run cmake when tests change Tell CMake that it needs to re-run when test source files parsed by `gtest_add_tests` change so that we can re-scan for tests automatically. --- Help/release/dev/FindGTest-depends.rst | 6 ++++++ Modules/FindGTest.cmake | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 Help/release/dev/FindGTest-depends.rst diff --git a/Help/release/dev/FindGTest-depends.rst b/Help/release/dev/FindGTest-depends.rst new file mode 100644 index 000000000..33c148950 --- /dev/null +++ b/Help/release/dev/FindGTest-depends.rst @@ -0,0 +1,6 @@ +FindGTest-depends +----------------- + +* The :module:`FindGTest` module ``gtest_add_tests`` function now causes + CMake to automatically re-run when test sources change so that they + can be re-scanned. diff --git a/Modules/FindGTest.cmake b/Modules/FindGTest.cmake index ca49e4aca..a7ffcfefe 100644 --- a/Modules/FindGTest.cmake +++ b/Modules/FindGTest.cmake @@ -82,8 +82,7 @@ # ``AUTO`` to find them from executable target # # However, note that this macro will slow down your tests by running -# an executable for each test and test fixture. You will also have to -# re-run CMake after adding or removing tests or test fixtures. +# an executable for each test and test fixture. # # Example usage:: # @@ -119,6 +118,7 @@ function(GTEST_ADD_TESTS executable extra_args) set(gtest_case_name_regex ".*\\( *([A-Za-z_0-9]+) *, *([A-Za-z_0-9]+) *\\).*") set(gtest_test_type_regex "(TYPED_TEST|TEST_?[FP]?)") foreach(source ${ARGN}) + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${source}) file(READ "${source}" contents) string(REGEX MATCHALL "${gtest_test_type_regex} *\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents}) foreach(hit ${found_tests})