forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/3.3'
Change-Id: I0ab4982e229d475b8e3575414b4bebbfea07498d
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include "qbsbuildconfiguration.h"
|
||||
#include "qbslogsink.h"
|
||||
#include "qbsprojectfile.h"
|
||||
#include "qbsprojectmanager.h"
|
||||
#include "qbsprojectparser.h"
|
||||
#include "qbsprojectmanagerconstants.h"
|
||||
#include "qbsnodes.h"
|
||||
@@ -47,6 +48,7 @@
|
||||
#include <coreplugin/progressmanager/progressmanager.h>
|
||||
#include <coreplugin/mimedatabase.h>
|
||||
#include <cpptools/cppmodelmanager.h>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <projectexplorer/buildenvironmentwidget.h>
|
||||
#include <projectexplorer/buildmanager.h>
|
||||
#include <projectexplorer/buildtargetinfo.h>
|
||||
@@ -559,6 +561,7 @@ void QbsProject::updateAfterBuild()
|
||||
QTC_ASSERT(m_qbsProject.isValid(), return);
|
||||
m_projectData = m_qbsProject.projectData();
|
||||
updateBuildTargetData();
|
||||
updateCppCompilerCallData();
|
||||
}
|
||||
|
||||
void QbsProject::registerQbsProjectParser(QbsProjectParser *p)
|
||||
@@ -624,6 +627,9 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
|
||||
|
||||
registerQbsProjectParser(new QbsProjectParser(this, m_qbsUpdateFutureInterface));
|
||||
|
||||
QbsManager * const qbsManager = ExtensionSystem::PluginManager::getObject<QbsManager>();
|
||||
QTC_ASSERT(qbsManager, return);
|
||||
qbsManager->updateProfileIfNecessary(activeTarget()->kit());
|
||||
m_qbsProjectParser->parse(config, env, dir);
|
||||
emit projectParsingStarted();
|
||||
}
|
||||
@@ -682,9 +688,7 @@ void QbsProject::updateCppCodeModel()
|
||||
QtSupport::BaseQtVersion *qtVersion =
|
||||
QtSupport::QtKitInformation::qtVersion(activeTarget()->kit());
|
||||
|
||||
CppTools::CppModelManager *modelmanager =
|
||||
CppTools::CppModelManager::instance();
|
||||
|
||||
CppTools::CppModelManager *modelmanager = CppTools::CppModelManager::instance();
|
||||
if (!modelmanager)
|
||||
return;
|
||||
|
||||
@@ -780,8 +784,51 @@ void QbsProject::updateCppCodeModel()
|
||||
|
||||
QtSupport::UiCodeModelManager::update(this, uiFiles);
|
||||
|
||||
// Register update the code model:
|
||||
// Update the code model
|
||||
m_codeModelFuture.cancel();
|
||||
m_codeModelFuture = modelmanager->updateProjectInfo(pinfo);
|
||||
m_codeModelProjectInfo = modelmanager->projectInfo(this);
|
||||
}
|
||||
|
||||
void QbsProject::updateCppCompilerCallData()
|
||||
{
|
||||
CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
|
||||
QTC_ASSERT(m_codeModelProjectInfo == modelManager->projectInfo(this), return);
|
||||
|
||||
CppTools::ProjectInfo::CompilerCallData data;
|
||||
foreach (const qbs::ProductData &product, m_projectData.allProducts()) {
|
||||
if (!product.isEnabled())
|
||||
continue;
|
||||
|
||||
foreach (const qbs::GroupData &group, product.groups()) {
|
||||
if (!group.isEnabled())
|
||||
continue;
|
||||
|
||||
foreach (const QString &file, group.allFilePaths()) {
|
||||
if (!CppTools::ProjectFile::isSource(CppTools::ProjectFile::classify(file)))
|
||||
continue;
|
||||
|
||||
qbs::ErrorInfo errorInfo;
|
||||
const qbs::RuleCommandList ruleCommands
|
||||
= m_qbsProject.ruleCommands(product, file, QLatin1String("obj"), &errorInfo);
|
||||
if (errorInfo.hasError())
|
||||
continue;
|
||||
|
||||
QList<QStringList> calls;
|
||||
foreach (const qbs::RuleCommand &ruleCommand, ruleCommands) {
|
||||
if (ruleCommand.type() == qbs::RuleCommand::ProcessCommandType)
|
||||
calls << ruleCommand.arguments();
|
||||
}
|
||||
|
||||
if (!calls.isEmpty())
|
||||
data.insert(file, calls);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_codeModelProjectInfo.setCompilerCallData(data);
|
||||
const QFuture<void> future = modelManager->updateProjectInfo(m_codeModelProjectInfo);
|
||||
QTC_CHECK(future.isFinished()); // No reparse of files expected
|
||||
}
|
||||
|
||||
void QbsProject::updateQmlJsCodeModel()
|
||||
|
||||
Reference in New Issue
Block a user