forked from qt-creator/qt-creator
QMakeProjectManager: Clean up updateCppCodeModel()
Change-Id: I083a6ed91d78ee278977128ec0f19ed28d0eeae4 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -356,22 +356,17 @@ void QmakeProject::updateCodeModels()
|
|||||||
|
|
||||||
void QmakeProject::updateCppCodeModel()
|
void QmakeProject::updateCppCodeModel()
|
||||||
{
|
{
|
||||||
|
using ProjectPart = CppTools::ProjectPart;
|
||||||
|
using ProjectFile = CppTools::ProjectFile;
|
||||||
|
|
||||||
m_toolChainWarnings.clear();
|
m_toolChainWarnings.clear();
|
||||||
|
|
||||||
typedef CppTools::ProjectPart ProjectPart;
|
const Kit *k = nullptr;
|
||||||
typedef CppTools::ProjectFile ProjectFile;
|
|
||||||
|
|
||||||
Kit *k = nullptr;
|
|
||||||
if (Target *target = activeTarget())
|
if (Target *target = activeTarget())
|
||||||
k = target->kit();
|
k = target->kit();
|
||||||
else
|
else
|
||||||
k = KitManager::defaultKit();
|
k = KitManager::defaultKit();
|
||||||
|
QTC_ASSERT(k, return);
|
||||||
CppTools::CppModelManager *modelmanager = CppTools::CppModelManager::instance();
|
|
||||||
FindQmakeProFiles findQmakeProFiles;
|
|
||||||
QList<QmakeProFileNode *> proFiles = findQmakeProFiles(rootProjectNode());
|
|
||||||
|
|
||||||
CppTools::ProjectInfo pinfo(this);
|
|
||||||
|
|
||||||
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k);
|
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k);
|
||||||
ProjectPart::QtVersion qtVersionForPart = ProjectPart::NoQt;
|
ProjectPart::QtVersion qtVersionForPart = ProjectPart::NoQt;
|
||||||
@@ -382,7 +377,11 @@ void QmakeProject::updateCppCodeModel()
|
|||||||
qtVersionForPart = ProjectPart::Qt5;
|
qtVersionForPart = ProjectPart::Qt5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FindQmakeProFiles findQmakeProFiles;
|
||||||
|
const QList<QmakeProFileNode *> proFiles = findQmakeProFiles(rootProjectNode());
|
||||||
|
CppTools::ProjectInfo projectInfo(this);
|
||||||
QList<ProjectExplorer::ExtraCompiler *> generators;
|
QList<ProjectExplorer::ExtraCompiler *> generators;
|
||||||
|
|
||||||
foreach (QmakeProFileNode *pro, proFiles) {
|
foreach (QmakeProFileNode *pro, proFiles) {
|
||||||
warnOnToolChainMismatch(pro);
|
warnOnToolChainMismatch(pro);
|
||||||
|
|
||||||
@@ -391,15 +390,14 @@ void QmakeProject::updateCppCodeModel()
|
|||||||
templatePart->displayName = pro->displayName();
|
templatePart->displayName = pro->displayName();
|
||||||
templatePart->projectFile = pro->filePath().toString();
|
templatePart->projectFile = pro->filePath().toString();
|
||||||
templatePart->selectedForBuilding = pro->includedInExactParse();
|
templatePart->selectedForBuilding = pro->includedInExactParse();
|
||||||
|
templatePart->projectDefines += pro->cxxDefines();
|
||||||
|
templatePart->precompiledHeaders.append(pro->variableValue(PrecompiledHeaderVar));
|
||||||
|
|
||||||
if (pro->variableValue(ConfigVar).contains(QLatin1String("qt")))
|
if (pro->variableValue(ConfigVar).contains(QLatin1String("qt")))
|
||||||
templatePart->qtVersion = qtVersionForPart;
|
templatePart->qtVersion = qtVersionForPart;
|
||||||
else
|
else
|
||||||
templatePart->qtVersion = ProjectPart::NoQt;
|
templatePart->qtVersion = ProjectPart::NoQt;
|
||||||
|
|
||||||
// part->defines
|
|
||||||
templatePart->projectDefines += pro->cxxDefines();
|
|
||||||
|
|
||||||
foreach (const QString &inc, pro->variableValue(IncludePathVar)) {
|
foreach (const QString &inc, pro->variableValue(IncludePathVar)) {
|
||||||
const auto headerPath
|
const auto headerPath
|
||||||
= CppTools::ProjectPartHeaderPath(inc, CppTools::ProjectPartHeaderPath::IncludePath);
|
= CppTools::ProjectPartHeaderPath(inc, CppTools::ProjectPartHeaderPath::IncludePath);
|
||||||
@@ -407,16 +405,11 @@ void QmakeProject::updateCppCodeModel()
|
|||||||
templatePart->headerPaths += headerPath;
|
templatePart->headerPaths += headerPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qtVersion) {
|
if (qtVersion && !qtVersion->frameworkInstallPath().isEmpty()) {
|
||||||
if (!qtVersion->frameworkInstallPath().isEmpty()) {
|
|
||||||
templatePart->headerPaths += CppTools::ProjectPartHeaderPath(
|
templatePart->headerPaths += CppTools::ProjectPartHeaderPath(
|
||||||
qtVersion->frameworkInstallPath(),
|
qtVersion->frameworkInstallPath(),
|
||||||
CppTools::ProjectPartHeaderPath::FrameworkPath);
|
CppTools::ProjectPartHeaderPath::FrameworkPath);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// part->precompiledHeaders
|
|
||||||
templatePart->precompiledHeaders.append(pro->variableValue(PrecompiledHeaderVar));
|
|
||||||
|
|
||||||
// TODO: there is no LANG_OBJCXX, so:
|
// TODO: there is no LANG_OBJCXX, so:
|
||||||
const QStringList cxxflags = pro->variableValue(CppFlagsVar);
|
const QStringList cxxflags = pro->variableValue(CppFlagsVar);
|
||||||
@@ -428,7 +421,7 @@ void QmakeProject::updateCppCodeModel()
|
|||||||
ProjectPart::Ptr cppPart = templatePart->copy();
|
ProjectPart::Ptr cppPart = templatePart->copy();
|
||||||
ProjectPart::Ptr objcppPart = templatePart->copy();
|
ProjectPart::Ptr objcppPart = templatePart->copy();
|
||||||
foreach (const QString &file, pro->variableValue(SourceVar)) {
|
foreach (const QString &file, pro->variableValue(SourceVar)) {
|
||||||
ProjectFile::Kind kind = ProjectFile::classify(file);
|
const ProjectFile::Kind kind = ProjectFile::classify(file);
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case ProjectFile::ObjCHeader:
|
case ProjectFile::ObjCHeader:
|
||||||
case ProjectFile::ObjCSource:
|
case ProjectFile::ObjCSource:
|
||||||
@@ -446,8 +439,8 @@ void QmakeProject::updateCppCodeModel()
|
|||||||
QList<ProjectExplorer::ExtraCompiler *> proGenerators = pro->extraCompilers();
|
QList<ProjectExplorer::ExtraCompiler *> proGenerators = pro->extraCompilers();
|
||||||
foreach (ProjectExplorer::ExtraCompiler *ec, proGenerators) {
|
foreach (ProjectExplorer::ExtraCompiler *ec, proGenerators) {
|
||||||
ec->forEachTarget([&](const Utils::FileName &generatedFile) {
|
ec->forEachTarget([&](const Utils::FileName &generatedFile) {
|
||||||
QString name = generatedFile.toString();
|
const QString name = generatedFile.toString();
|
||||||
ProjectFile::Kind kind = ProjectFile::classify(name);
|
const ProjectFile::Kind kind = ProjectFile::classify(name);
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case ProjectFile::CHeader:
|
case ProjectFile::CHeader:
|
||||||
case ProjectFile::CSource:
|
case ProjectFile::CSource:
|
||||||
@@ -470,20 +463,20 @@ void QmakeProject::updateCppCodeModel()
|
|||||||
|
|
||||||
cppPart->files.prepend(ProjectFile(CppTools::CppModelManager::configurationFileName(),
|
cppPart->files.prepend(ProjectFile(CppTools::CppModelManager::configurationFileName(),
|
||||||
ProjectFile::CXXSource));
|
ProjectFile::CXXSource));
|
||||||
pinfo.appendProjectPart(cppPart);
|
projectInfo.appendProjectPart(cppPart);
|
||||||
|
|
||||||
|
if (!objcppPart->files.isEmpty()) {
|
||||||
objcppPart->displayName += QLatin1String(" (ObjC++)");
|
objcppPart->displayName += QLatin1String(" (ObjC++)");
|
||||||
objcppPart->languageExtensions |= ProjectPart::ObjectiveCExtensions;
|
objcppPart->languageExtensions |= ProjectPart::ObjectiveCExtensions;
|
||||||
if (!objcppPart->files.isEmpty()) {
|
projectInfo.appendProjectPart(objcppPart);
|
||||||
pinfo.appendProjectPart(objcppPart);
|
|
||||||
cppPart->displayName += QLatin1String(" (C++)");
|
cppPart->displayName += QLatin1String(" (C++)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pinfo.finish();
|
|
||||||
|
|
||||||
// Also update Code Model Support for generated files:
|
projectInfo.finish();
|
||||||
|
|
||||||
CppTools::GeneratedCodeModelSupport::update(generators);
|
CppTools::GeneratedCodeModelSupport::update(generators);
|
||||||
|
m_codeModelFuture = CppTools::CppModelManager::instance()->updateProjectInfo(projectInfo);
|
||||||
m_codeModelFuture = modelmanager->updateProjectInfo(pinfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmakeProject::updateQmlJSCodeModel()
|
void QmakeProject::updateQmlJSCodeModel()
|
||||||
|
|||||||
Reference in New Issue
Block a user