Make the project managers tell the code model about include paths

... from the environment.

Fixes: QTCREATORBUG-17985
Change-Id: I9b54e550121cfcc0684a6e173337d59d235c6107
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Christian Kandeler
2019-07-05 16:58:07 +02:00
parent 6e1595c1b3
commit f7520b7d99
35 changed files with 168 additions and 113 deletions

View File

@@ -533,6 +533,8 @@ void QbsProject::handleQbsParsingDone(bool success)
m_qbsProject = m_qbsProjectParser->qbsProject();
m_qbsProjects.insert(activeTarget(), m_qbsProject);
bool dataChanged = false;
bool envChanged = m_lastParseEnv != m_qbsProjectParser->environment();
m_lastParseEnv = m_qbsProjectParser->environment();
if (success) {
QTC_ASSERT(m_qbsProject.isValid(), return);
const qbs::ProjectData &projectData = m_qbsProject.projectData();
@@ -552,6 +554,8 @@ void QbsProject::handleQbsParsingDone(bool success)
if (dataChanged)
updateAfterParse();
else if (envChanged)
updateCppCodeModel();
emitParsingFinished(success);
}
@@ -1085,7 +1089,7 @@ void QbsProject::updateCppCodeModel()
}
CppTools::GeneratedCodeModelSupport::update(m_extraCompilers);
m_cppCodeModelUpdater->update({this, kitInfo, rpps});
m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), rpps});
}
void QbsProject::updateQmlJsCodeModel()

View File

@@ -144,6 +144,7 @@ private:
QHash<ProjectExplorer::Target *, qbs::Project> m_qbsProjects;
qbs::Project m_qbsProject; // for activeTarget()
qbs::ProjectData m_projectData; // Cached m_qbsProject.projectData()
Utils::Environment m_lastParseEnv;
QSet<Core::IDocument *> m_qbsDocuments;
QbsProjectParser *m_qbsProjectParser = nullptr;

View File

@@ -82,6 +82,7 @@ void QbsProjectParser::parse(const QVariantMap &config, const Environment &env,
QTC_ASSERT(!dir.isEmpty(), return);
m_currentProgressBase = 0;
m_environment = env;
qbs::SetupProjectParameters params;
QVariantMap userConfig = config;

View File

@@ -50,6 +50,7 @@ public:
const QString &configName);
void startRuleExecution();
void cancel();
Utils::Environment environment() const { return m_environment; }
qbs::Project qbsProject() const;
qbs::ErrorInfo error();
@@ -69,6 +70,7 @@ private:
void handleRuleExecutionDone();
Utils::Environment m_environment;
QString m_projectFilePath;
qbs::SetupProjectJob *m_qbsSetupProjectJob = nullptr;
qbs::BuildJob *m_ruleExecutionJob = nullptr;