diff --git a/src/plugins/cmakeprojectmanager/cmakestep.cpp b/src/plugins/cmakeprojectmanager/cmakestep.cpp index 9ed0a67f35883ec8c5da5b361c978499a3094865..b914b51b2c1446c2ad7b9f7a45367611bf93c3cd 100644 --- a/src/plugins/cmakeprojectmanager/cmakestep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakestep.cpp @@ -57,8 +57,14 @@ bool CMakeStep::init(const QString &buildConfiguration) setEnabled(buildConfiguration, true); setWorkingDirectory(buildConfiguration, m_pro->buildDirectory(buildConfiguration)); setCommand(buildConfiguration, "cmake"); // TODO give full path here? + QString sourceDir = QFileInfo(m_pro->file()->fileName()).absolutePath(); - setArguments(buildConfiguration, QStringList() << sourceDir << "-GUnix Makefiles"); // TODO + setArguments(buildConfiguration, + QStringList() + << sourceDir + << "-GUnix Makefiles" + << value(buildConfiguration, "userArguments").toStringList()); // TODO + setEnvironment(buildConfiguration, m_pro->environment(buildConfiguration)); return AbstractProcessStep::init(buildConfiguration); } @@ -93,6 +99,16 @@ bool CMakeStep::immutable() const return true; } +QString CMakeStep::userArguments(const QString &buildConfiguration) const +{ + return ProjectExplorer::Environment::joinArgumentList(value(buildConfiguration, "userArguments").toStringList()); +} + +void CMakeStep::setUserArguments(const QString &buildConfiguration, const QString &arguments) +{ + setValue(buildConfiguration, "userArguments", ProjectExplorer::Environment::parseCombinedArgString(arguments)); +} + // // CMakeBuildStepConfigWidget // @@ -104,6 +120,7 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeStep *cmakeStep) setLayout(fl); m_arguments = new QLineEdit(this); fl->addRow("Additional arguments", m_arguments); + connect(m_arguments, SIGNAL(textChanged(QString)), this, SLOT(argumentsLineEditChanged())); } QString CMakeBuildStepConfigWidget::displayName() const @@ -111,9 +128,17 @@ QString CMakeBuildStepConfigWidget::displayName() const return "CMake"; } -void CMakeBuildStepConfigWidget::init(const QString & /*buildConfiguration */) +void CMakeBuildStepConfigWidget::init(const QString &buildConfiguration) +{ + m_buildConfiguration = buildConfiguration; + disconnect(m_arguments, SIGNAL(textChanged(QString)), this, SLOT(argumentsLineEditChanged())); + m_arguments->setText(m_cmakeStep->userArguments(buildConfiguration)); + connect(m_arguments, SIGNAL(textChanged(QString)), this, SLOT(argumentsLineEditChanged())); +} + +void CMakeBuildStepConfigWidget::argumentsLineEditChanged() { - // TODO + m_cmakeStep->setUserArguments(m_buildConfiguration, m_arguments->text()); } // diff --git a/src/plugins/cmakeprojectmanager/cmakestep.h b/src/plugins/cmakeprojectmanager/cmakestep.h index ec7c9cf9ad4c6b6aae38f610d6444d895c738a55..fdf93c31a83f88441c7ef204fd9a3a4c0c587fd8 100644 --- a/src/plugins/cmakeprojectmanager/cmakestep.h +++ b/src/plugins/cmakeprojectmanager/cmakestep.h @@ -60,18 +60,25 @@ public: virtual QString displayName(); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const; + + void setUserArguments(const QString &buildConfiguration, const QString &arguments); + QString userArguments(const QString &buildConfiguration) const; private: CMakeProject *m_pro; }; class CMakeBuildStepConfigWidget :public ProjectExplorer::BuildStepConfigWidget { + Q_OBJECT public: CMakeBuildStepConfigWidget(CMakeStep *cmakeStep); virtual QString displayName() const; virtual void init(const QString &buildConfiguration); +private slots: + void argumentsLineEditChanged(); private: CMakeStep *m_cmakeStep; + QString m_buildConfiguration; QLineEdit *m_arguments; };