mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-08 23:00:07 -06:00
Adds a "Step 0" to the tutorial which discusses minutia about where to get CMake, how to run it, and most importantly deals at length with various generator issues which aren't covered elsewhere.
89 lines
2.5 KiB
CMake
89 lines
2.5 KiB
CMake
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)
|