From 1e362b0f8b0dfd712337df35cd26c5dc98dfc294 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 19 Oct 2010 11:14:03 +0200 Subject: overhaul process argument handling get away from argument stringlists. instead, use native shell command lines which support quoting/splitting, environment variable expansion and redirections with well-understood semantics. Task-number: QTCREATORBUG-542 Task-number: QTCREATORBUG-1564 --- src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp') diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 2403846cd9c..200d4037cee 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -32,6 +32,7 @@ #include "cmakeproject.h" #include +#include #include #include @@ -102,7 +103,7 @@ bool CMakeManager::hasCodeBlocksMsvcGenerator() const // we probably want the process instead of this function // cmakeproject then could even run the cmake process in the background, adding the files afterwards // sounds like a plan -void CMakeManager::createXmlFile(QProcess *proc, const QStringList &arguments, +void CMakeManager::createXmlFile(Utils::QtcProcess *proc, const QString &arguments, const QString &sourceDirectory, const QDir &buildDirectory, const Utils::Environment &env, const QString &generator) { @@ -117,11 +118,16 @@ void CMakeManager::createXmlFile(QProcess *proc, const QStringList &arguments, QString buildDirectoryPath = buildDirectory.absolutePath(); buildDirectory.mkpath(buildDirectoryPath); proc->setWorkingDirectory(buildDirectoryPath); - proc->setEnvironment(env.toStringList()); + proc->setEnvironment(env); const QString srcdir = buildDirectory.exists(QLatin1String("CMakeCache.txt")) ? QString(QLatin1Char('.')) : sourceDirectory; - proc->start(cmakeExecutable(), QStringList() << srcdir << arguments << generator); + QString args; + Utils::QtcProcess::addArg(&args, srcdir); + Utils::QtcProcess::addArgs(&args, arguments); + Utils::QtcProcess::addArg(&args, generator); + proc->setCommand(cmakeExecutable(), args); + proc->start(); } QString CMakeManager::findCbpFile(const QDir &directory) -- cgit v1.2.3