forked from qt-creator/qt-creator
CppTools: improved languages support in ProjectPart
Please, read blueprint here: http://qt-project.org/wiki/Blueprint-for-language-specs-system Removed feature from QbsProjectManager: it not longer splits project on separate C and C++ parts, because Qt version used only by clang parser (not native) and can be ignored for pure C and Objective-C without C++. Change-Id: I1c561f7f9f915cc6cb8579d19db74e8352f54c1e Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
@@ -59,27 +59,6 @@ using namespace ProjectExplorer;
|
||||
namespace GenericProjectManager {
|
||||
namespace Internal {
|
||||
|
||||
static QList<Core::MimeType> cppMimeTypes()
|
||||
{
|
||||
QStringList mimeTypesNames;
|
||||
mimeTypesNames << QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE)
|
||||
<< QLatin1String(CppTools::Constants::C_HEADER_MIMETYPE)
|
||||
<< QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE)
|
||||
<< QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)
|
||||
<< QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE);
|
||||
|
||||
QList<Core::MimeType> mimeTypes;
|
||||
|
||||
const Core::MimeDatabase *mimeDatabase = Core::ICore::mimeDatabase();
|
||||
foreach (const QString &typeName, mimeTypesNames) {
|
||||
Core::MimeType mimeType = mimeDatabase->findByType(typeName);
|
||||
if (!mimeType.isNull())
|
||||
mimeTypes.append(mimeType);
|
||||
}
|
||||
|
||||
return mimeTypes;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// GenericProject
|
||||
@@ -267,8 +246,7 @@ void GenericProject::refresh(RefreshOptions options)
|
||||
if (modelManager) {
|
||||
CPlusPlus::CppModelManagerInterface::ProjectInfo pinfo = modelManager->projectInfo(this);
|
||||
pinfo.clearProjectParts();
|
||||
CPlusPlus::CppModelManagerInterface::ProjectPart::Ptr part(
|
||||
new CPlusPlus::CppModelManagerInterface::ProjectPart);
|
||||
CPlusPlus::ProjectPart::Ptr part(new CPlusPlus::ProjectPart);
|
||||
|
||||
Kit *k = activeTarget() ? activeTarget()->kit() : KitManager::instance()->defaultKit();
|
||||
if (ToolChain *tc = ToolChainKitInformation::toolChain(k)) {
|
||||
@@ -290,29 +268,23 @@ void GenericProject::refresh(RefreshOptions options)
|
||||
// ### add _defines.
|
||||
|
||||
// Add any C/C++ files to be parsed
|
||||
const QList<Core::MimeType> mimeTypes = cppMimeTypes();
|
||||
QFileInfo fileInfo;
|
||||
|
||||
foreach (const QString &file, files()) {
|
||||
fileInfo.setFile(file);
|
||||
foreach (const Core::MimeType &mimeType, mimeTypes) {
|
||||
if (mimeType.matchesFile(fileInfo)) {
|
||||
part->sourceFiles += file;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
CPlusPlus::ProjectFileAdder adder(part->files);
|
||||
foreach (const QString &file, files())
|
||||
adder.maybeAdd(file);
|
||||
|
||||
QStringList filesToUpdate;
|
||||
|
||||
if (options & Configuration) {
|
||||
filesToUpdate = part->sourceFiles;
|
||||
foreach (const CPlusPlus::ProjectFile &file, part->files)
|
||||
filesToUpdate << file.path;
|
||||
filesToUpdate.append(CPlusPlus::CppModelManagerInterface::configurationFileName());
|
||||
// Full update, if there's a code model update, cancel it
|
||||
m_codeModelFuture.cancel();
|
||||
} else if (options & Files) {
|
||||
// Only update files that got added to the list
|
||||
QSet<QString> newFileList = part->sourceFiles.toSet();
|
||||
QSet<QString> newFileList;
|
||||
foreach (const CPlusPlus::ProjectFile &file, part->files)
|
||||
newFileList.insert(file.path);
|
||||
newFileList.subtract(oldFileList);
|
||||
filesToUpdate.append(newFileList.toList());
|
||||
}
|
||||
|
Reference in New Issue
Block a user