Merge topic 'ExternalProject_TEST_EXCLUDE_FROM_MAIN'

636f0c1d ExternalProject: Add TEST_EXCLUDE_FROM_MAIN option
This commit is contained in:
Brad King 2014-12-08 09:07:10 -05:00 committed by CMake Topic Stage
commit 413ce02895
3 changed files with 52 additions and 4 deletions

View File

@ -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.

View File

@ -149,6 +149,8 @@ Create custom targets to build projects in external trees
Add test step executed before install step Add test step executed before install step
``TEST_AFTER_INSTALL 1`` ``TEST_AFTER_INSTALL 1``
Add test step executed after install step Add test step executed after install step
``TEST_EXCLUDE_FROM_MAIN 1``
Main target does not depend on the test step
``TEST_COMMAND <cmd>...`` ``TEST_COMMAND <cmd>...``
Command to drive test 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(before TARGET ${name} PROPERTY _EP_TEST_BEFORE_INSTALL)
get_property(after TARGET ${name} PROPERTY _EP_TEST_AFTER_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) 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 # 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...) # 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) if(cmd_set)
get_property(cmd TARGET ${name} PROPERTY _EP_TEST_COMMAND) get_property(cmd TARGET ${name} PROPERTY _EP_TEST_COMMAND)
else() else()
@ -2206,9 +2209,21 @@ function(_ep_add_test_command name)
endif() endif()
if(before) if(before)
set(dep_args DEPENDEES build DEPENDERS install) set(dependees_args DEPENDEES build)
else() 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() endif()
get_property(log TARGET ${name} PROPERTY _EP_LOG_TEST) get_property(log TARGET ${name} PROPERTY _EP_LOG_TEST)
@ -2221,7 +2236,9 @@ function(_ep_add_test_command name)
ExternalProject_Add_Step(${name} test ExternalProject_Add_Step(${name} test
COMMAND ${cmd} COMMAND ${cmd}
WORKING_DIRECTORY ${binary_dir} WORKING_DIRECTORY ${binary_dir}
${dep_args} ${dependees_args}
${dependers_args}
${exclude_args}
${log} ${log}
) )
endif() endif()

View File

@ -71,6 +71,31 @@ if(can_build_tutorial_step5)
LOG_TEST 1 LOG_TEST 1
) )
set_property(TARGET ${proj} PROPERTY FOLDER "Local") 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() endif()