From 30f8555a937471c187c971cfc1c2fc92000e1bec Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@digia.com> Date: Tue, 19 Aug 2014 12:01:29 +0200 Subject: [PATCH] CMakeProject: put different languages into separate project parts. This is in preparation for changes to the ProjectParts, where one part can only hold files for 1 language. Change-Id: I669e4f5b20e6553caad3a9ea2ed0e7c4455a8db7 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com> --- .../cmakeprojectmanager/cmakeproject.cpp | 58 +++++-------------- 1 file changed, 14 insertions(+), 44 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index d6df383bd15..f23d339a042 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -332,55 +332,25 @@ bool CMakeProject::parseCMakeLists() CppTools::ProjectInfo pinfo = modelmanager->projectInfo(this); pinfo.clearProjectParts(); - foreach (const CMakeBuildTarget &cbt, m_buildTargets) { - typedef CppTools::ProjectPart ProjectPart; - ProjectPart::Ptr part(new ProjectPart); - part->project = this; - part->displayName = cbt.title; - part->projectFile = projectFilePath().toString(); + CppTools::ProjectPartBuilder ppBuilder(pinfo); + foreach (const CMakeBuildTarget &cbt, m_buildTargets) { // This explicitly adds -I. to the include paths - part->headerPaths += ProjectPart::HeaderPath(projectDirectory().toString(), - ProjectPart::HeaderPath::IncludePath); - - foreach (const QString &includeFile, cbt.includeFiles) { - ProjectPart::HeaderPath hp(includeFile, ProjectPart::HeaderPath::IncludePath); - - // CodeBlocks is utterly ignorant of frameworks on Mac, and won't report framework - // paths. The work-around is to check if the include path ends in ".framework", and - // if so, add the parent directory as framework path. - if (includeFile.endsWith(QLatin1String(".framework"))) { - const int slashIdx = includeFile.lastIndexOf(QLatin1Char('/')); - if (slashIdx != -1) { - hp = ProjectPart::HeaderPath(includeFile.left(slashIdx), - ProjectPart::HeaderPath::FrameworkPath); - continue; - } - } - - part->headerPaths += hp; - } - - part->projectDefines += cbt.defines; - - // TODO rewrite - CppTools::ProjectFileAdder adder(part->files); - foreach (const QString &file, cbt.files) - adder.maybeAdd(file); - - QStringList cxxflags = getCXXFlagsFor(cbt); - - part->evaluateToolchain(tc, - cxxflags, - cxxflags, - SysRootKitInformation::sysRoot(k)); - - setProjectLanguage(ProjectExplorer::Constants::LANG_CXX, !part->files.isEmpty()); - pinfo.appendProjectPart(part); + QStringList includePaths = cbt.includeFiles; + includePaths += projectDirectory().toString(); + ppBuilder.setIncludePaths(includePaths); + ppBuilder.setCFlags(getCXXFlagsFor(cbt)); + ppBuilder.setCxxFlags(getCXXFlagsFor(cbt)); + ppBuilder.setDefines(cbt.defines); + ppBuilder.setDisplayName(cbt.title); + + const QList<Core::Id> languages = ppBuilder.createProjectPartsForFiles(cbt.files); + foreach (Core::Id language, languages) + setProjectLanguage(language, true); } + m_codeModelFuture.cancel(); m_codeModelFuture = modelmanager->updateProjectInfo(pinfo); - } emit displayNameChanged(); -- GitLab