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

Merge topic 'ExternalProject_TEST_EXCLUDE_FROM_MAIN'

636f0c1d ExternalProject: Add TEST_EXCLUDE_FROM_MAIN option
Brad King 11 лет назад
Родитель
Сommit
413ce02895

+ 6 - 0
Help/release/dev/ExternalProject_TEST_EXCLUDE_FROM_MAIN.rst

@@ -0,0 +1,6 @@
+ExternalProject_TEST_EXCLUDE_FROM_MAIN
+--------------------------------------
+
+* The :module:`ExternalProject` module :command:`ExternalProject_Add`
+  command learned a ``TEST_EXCLUDE_FROM_MAIN`` option to exclude tests
+  from the main build.

+ 21 - 4
Modules/ExternalProject.cmake

@@ -149,6 +149,8 @@ Create custom targets to build projects in external trees
     Add test step executed before install step
   ``TEST_AFTER_INSTALL 1``
     Add test step executed after install step
+  ``TEST_EXCLUDE_FROM_MAIN 1``
+    Main target does not depend on the test step
   ``TEST_COMMAND <cmd>...``
     Command to drive test
 
@@ -2193,12 +2195,13 @@ function(_ep_add_test_command name)
 
   get_property(before TARGET ${name} PROPERTY _EP_TEST_BEFORE_INSTALL)
   get_property(after TARGET ${name} PROPERTY _EP_TEST_AFTER_INSTALL)
+  get_property(exclude TARGET ${name} PROPERTY _EP_TEST_EXCLUDE_FROM_MAIN)
   get_property(cmd_set TARGET ${name} PROPERTY _EP_TEST_COMMAND SET)
 
   # Only actually add the test step if one of the test related properties is
   # explicitly set. (i.e. the test step is omitted unless requested...)
   #
-  if(cmd_set OR before OR after)
+  if(cmd_set OR before OR after OR exclude)
     if(cmd_set)
       get_property(cmd TARGET ${name} PROPERTY _EP_TEST_COMMAND)
     else()
@@ -2206,9 +2209,21 @@ function(_ep_add_test_command name)
     endif()
 
     if(before)
-      set(dep_args DEPENDEES build DEPENDERS install)
+      set(dependees_args DEPENDEES build)
     else()
-      set(dep_args DEPENDEES install)
+      set(dependees_args DEPENDEES install)
+    endif()
+
+    if(exclude)
+      set(dependers_args "")
+      set(exclude_args EXCLUDE_FROM_MAIN 1)
+    else()
+      if(before)
+        set(dependers_args DEPENDERS install)
+      else()
+        set(dependers_args "")
+      endif()
+      set(exclude_args "")
     endif()
 
     get_property(log TARGET ${name} PROPERTY _EP_LOG_TEST)
@@ -2221,7 +2236,9 @@ function(_ep_add_test_command name)
     ExternalProject_Add_Step(${name} test
       COMMAND ${cmd}
       WORKING_DIRECTORY ${binary_dir}
-      ${dep_args}
+      ${dependees_args}
+      ${dependers_args}
+      ${exclude_args}
       ${log}
       )
   endif()

+ 25 - 0
Tests/ExternalProjectLocal/CMakeLists.txt

@@ -71,6 +71,31 @@ if(can_build_tutorial_step5)
     LOG_TEST 1
   )
   set_property(TARGET ${proj} PROPERTY FOLDER "Local")
+
+  set(proj TutorialStep5-Local-TestExcludeFromMainBefore)
+  ExternalProject_Add(${proj}
+    URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>  -G ${CMAKE_GENERATOR} <SOURCE_DIR>
+    CMAKE_CACHE_DEFAULT_ARGS -DUSE_MYMATH:BOOL=OFF
+    TEST_BEFORE_INSTALL 1
+    TEST_EXCLUDE_FROM_MAIN 1
+    STEP_TARGETS test
+    LOG_TEST 1
+  )
+  set_property(TARGET ${proj} PROPERTY FOLDER "Local")
+
+  set(proj TutorialStep5-Local-TestExcludeFromMainAfter)
+  ExternalProject_Add(${proj}
+    URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>  -G ${CMAKE_GENERATOR} <SOURCE_DIR>
+    CMAKE_CACHE_DEFAULT_ARGS -DUSE_MYMATH:BOOL=OFF
+    TEST_AFTER_INSTALL 1
+    TEST_EXCLUDE_FROM_MAIN 1
+    STEP_TARGETS test
+    LOG_TEST 1
+  )
+  set_property(TARGET ${proj} PROPERTY FOLDER "Local")
+
 endif()