diff --git a/Source/cmake.cxx b/Source/cmake.cxx index bcd0d755b3..b9acf450b1 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1619,6 +1619,11 @@ void cmake::SetArgs(std::vector const& args) this->SetHomeOutputDirectory(cmSystemTools::GetLogicalWorkingDirectory()); } + if (this->State->GetRole() == cmState::Role::Script && havePreset) { + this->IssueMessage(MessageType::FATAL_ERROR, + "Presets are not supported in CMake script mode."); + } + #if !defined(CMAKE_BOOTSTRAP) if (presetsArgs.HasPresetsArg()) { this->SetArgsFromPreset(presetsArgs, haveBArg); diff --git a/Tests/RunCMake/CMakePresets/PresetScriptMode-result.txt b/Tests/RunCMake/CMakePresets/PresetScriptMode-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PresetScriptMode-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CMakePresets/PresetScriptMode-stderr.txt b/Tests/RunCMake/CMakePresets/PresetScriptMode-stderr.txt new file mode 100644 index 0000000000..ea606e4b63 --- /dev/null +++ b/Tests/RunCMake/CMakePresets/PresetScriptMode-stderr.txt @@ -0,0 +1,2 @@ +^CMake Error: + Presets are not supported in CMake script mode\.$ diff --git a/Tests/RunCMake/CMakePresets/PresetScriptMode.cmake b/Tests/RunCMake/CMakePresets/PresetScriptMode.cmake new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake index 95acf52fd3..6660eaa093 100644 --- a/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresets/RunCMakeTest.cmake @@ -349,6 +349,7 @@ run_cmake_presets(NoPresetArgument --preset) run_cmake_presets(NoPresetArgumentEq --preset= -DA=B) run_cmake_presets(UseHiddenPreset) run_cmake_presets(NoPresetFileArgument --preset GoodNoArgs --presets-file) +run_cmake_presets(PresetScriptMode -P PresetScriptMode.cmake --preset GoodNoArgs) # Test CMakeUserPresets.json unset(CMakePresets_FILE)