summaryrefslogtreecommitdiff
path: root/src/plugins/qbsprojectmanager
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-07-24 16:47:02 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2013-07-30 09:09:59 +0200
commitc883498e3bc440a9dff473156cc739441e05d482 (patch)
tree65360be0b24dca7652bba1e4b5f827a8300d32e9 /src/plugins/qbsprojectmanager
parent0a8f93268b0ee847ac0cf6e8216a4939b02e3996 (diff)
downloadqt-creator-c883498e3bc440a9dff473156cc739441e05d482.tar.gz
let "build file" only run one build step
For example, C++ source files will be compiled but the build stops before linking. Task-number: QBS-283 Change-Id: If0573ea58b9a047980aab0fd8e4828f3d0c315b8 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/qbsprojectmanager')
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp10
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.h4
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp2
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.h1
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp14
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h4
6 files changed, 31 insertions, 4 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
index 35769432c9..7f8ed0cb6f 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
@@ -193,6 +193,16 @@ QStringList QbsBuildConfiguration::changedFiles() const
return m_changedFiles;
}
+void QbsBuildConfiguration::setActiveFileTags(const QStringList &fileTags)
+{
+ m_activeFileTags = fileTags;
+}
+
+QStringList QbsBuildConfiguration::activeFileTags() const
+{
+ return m_activeFileTags;
+}
+
void QbsBuildConfiguration::setProducts(const QStringList &products)
{
m_products = products;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
index 6304bf7adc..022165b7fe 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
@@ -73,6 +73,9 @@ public:
void setChangedFiles(const QStringList &files);
QStringList changedFiles() const;
+ void setActiveFileTags(const QStringList &fileTags);
+ QStringList activeFileTags() const;
+
void setProducts(const QStringList &products);
QStringList products() const;
@@ -99,6 +102,7 @@ private:
bool m_parsingError;
Utils::FileName m_buildDirectory;
QStringList m_changedFiles;
+ QStringList m_activeFileTags;
QStringList m_products;
friend class QbsBuildConfigurationFactory;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index 9c6a4ceb0e..d576239768 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -107,6 +107,7 @@ bool QbsBuildStep::init()
m_parser->appendOutputParser(parser);
m_changedFiles = bc->changedFiles();
+ m_activeFileTags = bc->activeFileTags();
m_products = bc->products();
connect(m_parser, SIGNAL(addOutput(QString,ProjectExplorer::BuildStep::OutputFormat)),
@@ -124,6 +125,7 @@ void QbsBuildStep::run(QFutureInterface<bool> &fi)
QbsProject *pro = static_cast<QbsProject *>(project());
qbs::BuildOptions options(m_qbsBuildOptions);
options.setChangedFiles(m_changedFiles);
+ options.setActiveFileTags(m_activeFileTags);
m_job = pro->build(options, m_products);
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h
index fce407b658..a6e6827da9 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h
@@ -100,6 +100,7 @@ private:
// Temporary data:
QStringList m_changedFiles;
+ QStringList m_activeFileTags;
QStringList m_products;
QFutureInterface<bool> *m_fi;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp
index bb32ff9337..ebd9bb589b 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp
@@ -301,7 +301,7 @@ void QbsProjectManagerPlugin::buildFileContextMenu()
QTC_ASSERT(m_currentNode, return);
QTC_ASSERT(m_currentProject, return);
- buildFiles(m_currentProject, QStringList(m_currentNode->path()));
+ buildSingleFile(m_currentProject, m_currentNode->path());
}
void QbsProjectManagerPlugin::buildFile()
@@ -316,7 +316,7 @@ void QbsProjectManagerPlugin::buildFile()
if (!project || file.isEmpty())
return;
- buildFiles(project, QStringList(file));
+ buildSingleFile(project, file);
}
void QbsProjectManagerPlugin::buildProductContextMenu()
@@ -345,7 +345,8 @@ void QbsProjectManagerPlugin::buildProduct()
buildProducts(project, QStringList(product->displayName()));
}
-void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList &files)
+void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList &files,
+ const QStringList &activeFileTags)
{
QTC_ASSERT(project, return);
QTC_ASSERT(!files.isEmpty(), return);
@@ -362,6 +363,7 @@ void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList
return;
bc->setChangedFiles(files);
+ bc->setActiveFileTags(activeFileTags);
bc->setProducts(QStringList());
const Core::Id buildStep = Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
@@ -372,6 +374,12 @@ void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList
bc->setChangedFiles(QStringList());
}
+void QbsProjectManagerPlugin::buildSingleFile(QbsProject *project, const QString &file)
+{
+ buildFiles(project, QStringList(file), QStringList()
+ << QLatin1String("obj") << QLatin1String("hpp"));
+}
+
void QbsProjectManagerPlugin::buildProducts(QbsProject *project, const QStringList &products)
{
QTC_ASSERT(project, return);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h
index 9951f30a2f..807b29b5d4 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h
@@ -80,7 +80,9 @@ private slots:
void reparseCurrentProject();
private:
- void buildFiles(QbsProject *project, const QStringList &files);
+ void buildFiles(QbsProject *project, const QStringList &files,
+ const QStringList &activeFileTags);
+ void buildSingleFile(QbsProject *project, const QString &file);
void buildProducts(QbsProject *project, const QStringList &products);
QbsManager *m_manager;