diff options
author | Stephen Kelly <steveire@gmail.com> | 2012-02-01 13:25:14 +0100 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2012-02-01 13:25:14 +0100 |
commit | b7bec845e2da25ec3a75d3a315dd0aa5bd07b159 (patch) | |
tree | 59d0b3c3e66fb1f42d901c66ba4e014e673d47c6 | |
parent | 3e6f0279e8b1d551155776b8bec383f95c53fece (diff) | |
download | extra-cmake-modules-b7bec845e2da25ec3a75d3a315dd0aa5bd07b159.tar.gz extra-cmake-modules-b7bec845e2da25ec3a75d3a315dd0aa5bd07b159.tar.bz2 |
Add the ecm_mark_as_test macro.
This is for cases when adding targets that are only part of the
testing infrastructure so that they can be built conditionally
or not at all.
-rw-r--r-- | modules/ECMMarkAsTest.cmake | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/modules/ECMMarkAsTest.cmake b/modules/ECMMarkAsTest.cmake new file mode 100644 index 00000000..5d359a61 --- /dev/null +++ b/modules/ECMMarkAsTest.cmake @@ -0,0 +1,32 @@ +# - Function for marking targets as being only for testing +# This module provides the function ECM_MARK_AS_TEST(). +# +# The ECM_MARK_AS_TEST function is used to indicate that a target should only +# be built if the BUILD_TESTING option (provided by CTest) is enabled. +# +# ECM_MARK_AS_TEST( target1 target2 ... targetN ) +# +# If BUILD_TESTING is False, then targets marked as tests are exluded from +# the ALL target. They are all part of the 'buildtests' target though, so +# even if building with BUILD_TESTING set to False, it is possible to build +# all tests by invoking the 'buildtests' target. + +if (NOT BUILD_TESTING) + get_property(_buildtestsAdded GLOBAL PROPERTY BUILDTESTS_ADDED) + if(NOT _buildtestsAdded) + add_custom_target(buildtests) + set_property(GLOBAL PROPERTY BUILDTESTS_ADDED TRUE) + endif() +endif() + +function(ecm_mark_as_test) + if (NOT BUILD_TESTING) + foreach(_target ${ARGN}) + set_target_properties(${_target} + PROPERTIES + EXCLUDE_FROM_ALL 1 + ) + add_dependencies(buildtests ${_target}) + endforeach() + endif() +endfunction() |