diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 362adf1cd3..4e9c451b9e 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -4386,6 +4386,15 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) } }; + auto buildPresetCommand = [&args](std::vector cmd, + std::string const& presetName) { + cmd.insert(cmd.end(), { "--preset", presetName }); + if (!args.PresetsFile.empty()) { + cmd.insert(cmd.end(), { "--presets-file", args.PresetsFile }); + } + return cmd; + }; + std::vector steps; steps.reserve(expandedPreset->Steps.size()); int stepNumber = 1; @@ -4399,9 +4408,8 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!configurePreset) { return 1; } - std::vector configureCmdArgs{ - cmSystemTools::GetCMakeCommand(), "--preset", step.PresetName - }; + std::vector configureCmdArgs = buildPresetCommand( + { cmSystemTools::GetCMakeCommand() }, step.PresetName); if (args.Fresh) { configureCmdArgs.emplace_back("--fresh"); } @@ -4414,10 +4422,10 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!buildPreset) { return 1; } - steps.emplace_back( - stepNumber, "build"_s, step.PresetName, - buildWorkflowStep({ cmSystemTools::GetCMakeCommand(), "--build", - "--preset", step.PresetName })); + std::vector buildCmdArgs = buildPresetCommand( + { cmSystemTools::GetCMakeCommand(), "--build" }, step.PresetName); + steps.emplace_back(stepNumber, "build"_s, step.PresetName, + buildWorkflowStep(buildCmdArgs)); } break; case cmCMakePresetsGraph::WorkflowPreset::WorkflowStep::Type::Test: { auto const* testPreset = this->FindPresetForWorkflow( @@ -4425,10 +4433,10 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!testPreset) { return 1; } - steps.emplace_back( - stepNumber, "test"_s, step.PresetName, - buildWorkflowStep({ cmSystemTools::GetCTestCommand(), "--preset", - step.PresetName })); + std::vector testCmdArgs = buildPresetCommand( + { cmSystemTools::GetCTestCommand() }, step.PresetName); + steps.emplace_back(stepNumber, "test"_s, step.PresetName, + buildWorkflowStep(testCmdArgs)); } break; case cmCMakePresetsGraph::WorkflowPreset::WorkflowStep::Type::Package: { auto const* packagePreset = this->FindPresetForWorkflow( @@ -4436,10 +4444,10 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args) if (!packagePreset) { return 1; } - steps.emplace_back( - stepNumber, "package"_s, step.PresetName, - buildWorkflowStep({ cmSystemTools::GetCPackCommand(), "--preset", - step.PresetName })); + std::vector packageCmdArgs = buildPresetCommand( + { cmSystemTools::GetCPackCommand() }, step.PresetName); + steps.emplace_back(stepNumber, "package"_s, step.PresetName, + buildWorkflowStep(packageCmdArgs)); } break; } stepNumber++; diff --git a/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt b/Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-test-x-stdout.txt similarity index 100% rename from Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-text-x-stdout.txt rename to Tests/RunCMake/CMakePresetsTest/OtherCMakePresetsFileListPresets-test-x-stdout.txt diff --git a/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake b/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake index e121b1c459..304d6cad59 100644 --- a/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMakePresetsWorkflow/RunCMakeTest.cmake @@ -86,9 +86,11 @@ unset(CMakePresets_FILE) unset(CMakeUserPresets_FILE) unset(CMakePresets_ASSETS) +set(CMakePresets_FILE "${RunCMake_SOURCE_DIR}/DoesNotExist.json.in") set(CMakePresets_FILE_ARG "OtherCMakePresetsFile.json") run_cmake_workflow_presets(OtherCMakePresetsFile) -run_cmake_workflow_presets(OtherCMakePresetsFileListPreset --list-presets) +run_cmake_workflow_presets(OtherCMakePresetsFileListPresets --list-presets) +unset(CMakePresets_FILE) unset(CMakePresets_FILE_ARG) run_cmake_workflow_presets(ListPresets --list-presets)