summaryrefslogtreecommitdiffstats
path: root/Tests/VSExcludeFromDefaultBuild
diff options
context:
space:
mode:
authorPetr Kmoch <petr.kmoch@gmail.com>2012-10-12 13:30:17 (GMT)
committerBrad King <brad.king@kitware.com>2012-11-13 14:08:42 (GMT)
commitb777272b0b165a62d61b745a394fe4fc99dc66ee (patch)
treece7779ef002bb7f04a31014eb21698f5bc129b35 /Tests/VSExcludeFromDefaultBuild
parentc31e119d246e06fd5cc8d4cbc50b8e0d78c852a0 (diff)
downloadCMake-b777272b0b165a62d61b745a394fe4fc99dc66ee.zip
CMake-b777272b0b165a62d61b745a394fe4fc99dc66ee.tar.gz
CMake-b777272b0b165a62d61b745a394fe4fc99dc66ee.tar.bz2
Add tests for EXCLUDE_FROM_DEFAULT_BUILD
Add tests for EXCLUDE_FROM_DEFAULT_BUILD and its per-configuration variants.
Diffstat (limited to 'Tests/VSExcludeFromDefaultBuild')
-rw-r--r--Tests/VSExcludeFromDefaultBuild/CMakeLists.txt32
-rw-r--r--Tests/VSExcludeFromDefaultBuild/ClearExes.cmake4
-rw-r--r--Tests/VSExcludeFromDefaultBuild/ResultTest.cmake23
-rw-r--r--Tests/VSExcludeFromDefaultBuild/main.c4
4 files changed, 63 insertions, 0 deletions
diff --git a/Tests/VSExcludeFromDefaultBuild/CMakeLists.txt b/Tests/VSExcludeFromDefaultBuild/CMakeLists.txt
new file mode 100644
index 0000000..d30414b
--- /dev/null
+++ b/Tests/VSExcludeFromDefaultBuild/CMakeLists.txt
@@ -0,0 +1,32 @@
+cmake_minimum_required(VERSION 2.8.9)
+project(VSExcludeFromDefaultBuild)
+
+# First step is to clear all .exe files in output so that possible past
+# failures of this test do not prevent it from succeeding.
+add_custom_target(ClearExes ALL
+ COMMAND "${CMAKE_COMMAND}"
+ -Ddir=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/ClearExes.cmake
+ VERBATIM)
+
+# Make sure ClearExes is executed before other targets are built
+function(add_test_executable target)
+ add_executable("${target}" ${ARGN})
+ add_dependencies("${target}" ClearExes)
+endfunction()
+
+add_test_executable(DefaultBuilt main.c)
+
+add_test_executable(AlwaysBuilt main.c)
+set_target_properties(AlwaysBuilt PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD FALSE)
+
+add_test_executable(NeverBuilt main.c)
+set_target_properties(NeverBuilt PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
+
+foreach(config ${CMAKE_CONFIGURATION_TYPES})
+ string(TOUPPER ${config} Config)
+ add_test_executable(BuiltIn${config} main.c)
+ set_target_properties(BuiltIn${config} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE EXCLUDE_FROM_DEFAULT_BUILD_${Config} FALSE)
+ add_test_executable(ExcludedIn${config} main.c)
+ set_target_properties(ExcludedIn${config} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_${Config} TRUE)
+endforeach()
diff --git a/Tests/VSExcludeFromDefaultBuild/ClearExes.cmake b/Tests/VSExcludeFromDefaultBuild/ClearExes.cmake
new file mode 100644
index 0000000..ece30ad
--- /dev/null
+++ b/Tests/VSExcludeFromDefaultBuild/ClearExes.cmake
@@ -0,0 +1,4 @@
+file(GLOB exeFiles "${dir}/*.exe")
+foreach(exeFile IN LISTS exeFiles)
+ file(REMOVE "${exeFile}")
+endforeach()
diff --git a/Tests/VSExcludeFromDefaultBuild/ResultTest.cmake b/Tests/VSExcludeFromDefaultBuild/ResultTest.cmake
new file mode 100644
index 0000000..8fb00bf
--- /dev/null
+++ b/Tests/VSExcludeFromDefaultBuild/ResultTest.cmake
@@ -0,0 +1,23 @@
+message(STATUS "Testing configuration ${activeConfig}.")
+
+macro(TestExists exeName)
+ set(exeFile "${dir}/${activeConfig}/${exeName}.exe")
+ if(${ARGN} EXISTS "${exeFile}")
+ message(STATUS "File ${exeFile} was correctly found ${ARGN} to exist.")
+ else()
+ message(FATAL_ERROR "File ${exeFile} was expected ${ARGN} to exist!")
+ endif()
+endmacro()
+
+TestExists(DefaultBuilt)
+TestExists(AlwaysBuilt)
+TestExists(NeverBuilt NOT)
+foreach(config ${allConfigs})
+ if(config STREQUAL activeConfig)
+ TestExists(BuiltIn${config})
+ TestExists(ExcludedIn${config} NOT)
+ else()
+ TestExists(BuiltIn${config} NOT)
+ TestExists(ExcludedIn${config})
+ endif()
+endforeach()
diff --git a/Tests/VSExcludeFromDefaultBuild/main.c b/Tests/VSExcludeFromDefaultBuild/main.c
new file mode 100644
index 0000000..8488f4e
--- /dev/null
+++ b/Tests/VSExcludeFromDefaultBuild/main.c
@@ -0,0 +1,4 @@
+int main(void)
+{
+ return 0;
+}