Просмотр исходного кода

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.
Zak Eckert 9 лет назад
Родитель
Сommit
a5d3d003d0
2 измененных файлов с 8 добавлено и 2 удалено
  1. 6 0
      Help/release/dev/FindGTest-depends.rst
  2. 2 2
      Modules/FindGTest.cmake

+ 6 - 0
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.

+ 2 - 2
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})