| # 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() |