mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-13 18:00:09 -06:00
This is a full re-write of the CMake Tutorial for CMake 3.23, both the functionality it provides, as well as the modern workflows that developers use when interfacing with CMake. Issue: #22663, #23086, #23799, #26053, #26105, #26153, #26914
84 lines
2.5 KiB
CMake
84 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})
|
|
|
|
unset(RunCMake_TEST_OUTPUT_MERGE)
|
|
set(RunCMake-stdout-file ${name}-run-stdout.txt)
|
|
run_cmake_command(${name}-run ${exe} 25)
|
|
|
|
endfunction()
|
|
|
|
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)
|