diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-07-24 16:47:02 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-07-30 09:09:59 +0200 |
commit | c883498e3bc440a9dff473156cc739441e05d482 (patch) | |
tree | 65360be0b24dca7652bba1e4b5f827a8300d32e9 /src/plugins/qbsprojectmanager | |
parent | 0a8f93268b0ee847ac0cf6e8216a4939b02e3996 (diff) | |
download | qt-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')
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; |