diff options
Diffstat (limited to 'Tests/CMakeBuildTest.cmake.in')
-rw-r--r-- | Tests/CMakeBuildTest.cmake.in | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Tests/CMakeBuildTest.cmake.in b/Tests/CMakeBuildTest.cmake.in new file mode 100644 index 000000000..a8bb75090 --- /dev/null +++ b/Tests/CMakeBuildTest.cmake.in @@ -0,0 +1,59 @@ +# create the binary directory +make_directory("@CMAKE_BUILD_TEST_BINARY_DIR@") + +# remove the CMakeCache.txt file from the source dir +# if there is one, so that in-source cmake tests +# still pass +message("Remove: @CMAKE_BUILD_TEST_SOURCE_DIR@/CMakeCache.txt") +file(REMOVE "@CMAKE_BUILD_TEST_SOURCE_DIR@/CMakeCache.txt") + +# run cmake in the binary directory +message("running: ${CMAKE_COMMAND}") +execute_process(COMMAND "${CMAKE_COMMAND}" + "@CMAKE_BUILD_TEST_SOURCE_DIR@" + "-G@CMAKE_TEST_GENERATOR@" + WORKING_DIRECTORY "@CMAKE_BUILD_TEST_BINARY_DIR@" + RESULT_VARIABLE RESULT) +if(RESULT) + message(FATAL_ERROR "Error running cmake command") +endif(RESULT) + +# Now use the --build option to build the project +message("running: ${CMAKE_COMMAND} --build") +execute_process(COMMAND "${CMAKE_COMMAND}" + --build "@CMAKE_BUILD_TEST_BINARY_DIR@" --config Debug + RESULT_VARIABLE RESULT) +if(RESULT) + message(FATAL_ERROR "Error running cmake --build") +endif(RESULT) + +# check for configuration types +set(CMAKE_CONFIGURATION_TYPES @CMAKE_CONFIGURATION_TYPES@) +# run the executable out of the Debug directory if there +# are configuration types +if(CMAKE_CONFIGURATION_TYPES) + set(RUN_TEST "@CMAKE_BUILD_TEST_BINARY_DIR@/Debug/@CMAKE_BUILD_TEST_EXE@") +else(CMAKE_CONFIGURATION_TYPES) + set(RUN_TEST "@CMAKE_BUILD_TEST_BINARY_DIR@/@CMAKE_BUILD_TEST_EXE@") +endif(CMAKE_CONFIGURATION_TYPES) +# run the test results +message("running [${RUN_TEST}]") +execute_process(COMMAND "${RUN_TEST}" RESULT_VARIABLE RESULT) +if(RESULT) + message(FATAL_ERROR "Error running test @CMAKE_BUILD_TEST_EXE@") +endif(RESULT) + +# build it again with clean and only @CMAKE_BUILD_TEST_EXE@ target +execute_process(COMMAND "${CMAKE_COMMAND}" + --build "@CMAKE_BUILD_TEST_BINARY_DIR@" --config Debug + --clean-first --target @CMAKE_BUILD_TEST_EXE@ + RESULT_VARIABLE RESULT) +if(RESULT) + message(FATAL_ERROR "Error running cmake --build") +endif(RESULT) + +# run it again after clean +execute_process(COMMAND "${RUN_TEST}" RESULT_VARIABLE RESULT) +if(RESULT) + message(FATAL_ERROR "Error running test @CMAKE_BUILD_TEST_EXE@ after clean ") +endif(RESULT) |