diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 1d2ef2cb752..364337308ba 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -205,8 +205,6 @@ bool CMakeBuildStep::init() } } - QString arguments = allArguments(rc); - setIgnoreReturnValue(m_buildTarget == CMakeBuildStep::cleanTarget()); ProcessParameters *pp = processParameters(); @@ -217,8 +215,7 @@ bool CMakeBuildStep::init() env.set("NINJA_STATUS", m_ninjaProgressString + "%o/sec] "); pp->setEnvironment(env); pp->setWorkingDirectory(bc->buildDirectory()); - pp->setCommand(cmakeCommand()); - pp->setArguments(arguments); + pp->setCommandLine(cmakeCommand(rc)); pp->resolveAll(); setOutputParser(new CMakeParser); @@ -342,12 +339,12 @@ void CMakeBuildStep::setToolArguments(const QString &list) m_toolArguments = list; } -QString CMakeBuildStep::allArguments(const CMakeRunConfiguration *rc) const +Utils::CommandLine CMakeBuildStep::cmakeCommand(CMakeRunConfiguration *rc) const { - QString arguments; + CMakeTool *tool = CMakeKitAspect::cmakeTool(target()->kit()); - Utils::QtcProcess::addArg(&arguments, "--build"); - Utils::QtcProcess::addArg(&arguments, "."); + Utils::CommandLine cmd(tool ? tool->cmakeExecutable() : Utils::FilePath(), {}); + cmd.addArgs({"--build", "."}); QString target; @@ -360,21 +357,14 @@ QString CMakeBuildStep::allArguments(const CMakeRunConfiguration *rc) const target = m_buildTarget; } - Utils::QtcProcess::addArg(&arguments, "--target"); - Utils::QtcProcess::addArg(&arguments, target); + cmd.addArgs({"--target", target}); if (!m_toolArguments.isEmpty()) { - Utils::QtcProcess::addArg(&arguments, "--"); - arguments += ' ' + m_toolArguments; + cmd.addArg("--"); + cmd.addArgs(m_toolArguments); } - return arguments; -} - -Utils::FilePath CMakeBuildStep::cmakeCommand() const -{ - CMakeTool *tool = CMakeKitAspect::cmakeTool(target()->kit()); - return tool ? tool->cmakeExecutable() : Utils::FilePath(); + return cmd; } QString CMakeBuildStep::cleanTarget() @@ -530,8 +520,7 @@ void CMakeBuildStepConfigWidget::updateDetails() param.setMacroExpander(bc->macroExpander()); param.setEnvironment(bc->environment()); param.setWorkingDirectory(bc->buildDirectory()); - param.setCommand(m_buildStep->cmakeCommand()); - param.setArguments(m_buildStep->allArguments(nullptr)); + param.setCommandLine(m_buildStep->cmakeCommand(nullptr)); setSummaryText(param.summary(displayName())); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h index ba2f62dab60..9b906f883fa 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h @@ -35,7 +35,10 @@ class QListWidget; class QListWidgetItem; QT_END_NAMESPACE -namespace Utils { class PathChooser; } +namespace Utils { +class CommandLine; +class PathChooser; +} // Utils namespace ProjectExplorer { class ToolChain; } @@ -64,9 +67,7 @@ public: QString toolArguments() const; void setToolArguments(const QString &list); - QString allArguments(const CMakeRunConfiguration *rc) const; - - Utils::FilePath cmakeCommand() const; + Utils::CommandLine cmakeCommand(CMakeRunConfiguration *rc) const; QVariantMap toMap() const override; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 4814ab4c32a..1182b9699ef 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -54,6 +54,7 @@ #include #include +#include #include #include @@ -635,7 +636,8 @@ MakeInstallCommand CMakeProject::makeInstallCommand(const Target *target, if (const BuildConfiguration * const bc = target->activeBuildConfiguration()) { if (const auto cmakeStep = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD) ->firstOfType()) { - cmd.command = cmakeStep->cmakeCommand(); + if (CMakeTool *tool = CMakeKitAspect::cmakeTool(target->kit())) + cmd.command = tool->cmakeExecutable(); } } cmd.arguments << "--build" << "." << "--target" << "install";