| include(RunCMake) |
| |
| run_cmake(Inspect) |
| include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake") |
| |
| function(run_tutorial_step name) |
| if(ARGV1 STREQUAL "TUTORIALPROJECT_SUBDIR") |
| set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}/TutorialProject) |
| else() |
| set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}) |
| endif() |
| |
| set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}/build) |
| set(config Release) |
| |
| if(RunCMake_GENERATOR_IS_MULTI_CONFIG) |
| set(exe ${RunCMake_TEST_BINARY_DIR}/Tutorial/${config}/Tutorial) |
| else() |
| set(exe ${RunCMake_TEST_BINARY_DIR}/Tutorial/Tutorial) |
| list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=${config}) |
| endif() |
| |
| if(ARGV1 STREQUAL "NO_PRESET") |
| list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_CXX_STANDARD=11) |
| else() |
| list(APPEND RunCMake_TEST_OPTIONS --preset tutorial) |
| endif() |
| |
| if(ARGV2 STREQUAL "SETUP_CMAKE_PREFIX") |
| list(APPEND RunCMake_TEST_OPTIONS |
| "-DCMAKE_PREFIX_PATH=${Tutorial_SOURCE_DIR}/${name}/install\;${RunCMake_BINARY_DIR}/${name}/install" |
| ) |
| endif() |
| |
| list(APPEND RunCMake_TEST_OPTIONS -B ${RunCMake_TEST_BINARY_DIR}) |
| |
| run_cmake(${name}-configure) |
| |
| unset(RunCMake_TEST_OPTIONS) |
| set(RunCMake_TEST_NO_CLEAN 1) |
| set(RunCMake_TEST_OUTPUT_MERGE 1) |
| run_cmake_command(${name}-build ${CMAKE_COMMAND} --build . --config ${config}) |
| |
| if(name STREQUAL "Step0") |
| return() |
| endif() |
| |
| unset(RunCMake_TEST_OUTPUT_MERGE) |
| set(RunCMake-stdout-file ${name}-run-stdout.txt) |
| run_cmake_command(${name}-run ${exe} 25) |
| |
| endfunction() |
| |
| run_tutorial_step(Step0 NO_PRESET) |
| run_tutorial_step(Step3 NO_PRESET) |
| |
| if(NOT can_build_cxx20_tutorial) |
| return() |
| endif() |
| |
| foreach(num RANGE 4 9) |
| run_tutorial_step(Step${num}) |
| endforeach() |
| |
| run_tutorial_step(Step10 TUTORIALPROJECT_SUBDIR) |
| |
| function(install_simpletest name) |
| set(RunCMake_TEST_SOURCE_DIR ${Tutorial_SOURCE_DIR}/${name}/SimpleTest) |
| set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${name}/build-simpletest) |
| set(config Release) |
| |
| list(APPEND RunCMake_TEST_OPTIONS |
| -B ${RunCMake_TEST_BINARY_DIR} |
| -DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/${name}/install |
| --preset tutorial |
| ) |
| run_cmake(${name}-simpletest-configure) |
| |
| set(RunCMake_TEST_NO_CLEAN 1) |
| set(RunCMake_TEST_OUTPUT_MERGE 1) |
| run_cmake_command(${name}-simpletest-install ${CMAKE_COMMAND} --install ${RunCMake_TEST_BINARY_DIR} --config ${config}) |
| endfunction() |
| |
| install_simpletest(Step11) |
| run_tutorial_step(Step11 TUTORIALPROJECT_SUBDIR SETUP_CMAKE_PREFIX) |
| |
| install_simpletest(Complete) |
| run_tutorial_step(Complete TUTORIALPROJECT_SUBDIR SETUP_CMAKE_PREFIX) |