| # 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_GENERATOR@" | |
| -A "@CMAKE_GENERATOR_PLATFORM@" | |
| -T "@CMAKE_GENERATOR_TOOLSET@" | |
| WORKING_DIRECTORY "@CMAKE_BUILD_TEST_BINARY_DIR@" | |
| RESULT_VARIABLE RESULT) | |
| if(RESULT) | |
| message(FATAL_ERROR "Error running cmake command") | |
| endif() | |
| # 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() | |
| # run the executable out of the Debug directory if using a | |
| # multi-config generator | |
| set(_isMultiConfig @_isMultiConfig@) | |
| if(_isMultiConfig) | |
| set(RUN_TEST "@CMAKE_BUILD_TEST_BINARY_DIR@/Debug/@CMAKE_BUILD_TEST_EXE@") | |
| else() | |
| set(RUN_TEST "@CMAKE_BUILD_TEST_BINARY_DIR@/@CMAKE_BUILD_TEST_EXE@") | |
| endif() | |
| # 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() | |
| # 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() | |
| # 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() |