aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cmakeprojectmanager
diff options
context:
space:
mode:
authorErik Verbruggen <[email protected]>2012-02-16 15:09:56 +0100
committerErik Verbruggen <[email protected]>2012-02-16 15:17:17 +0100
commit3aab8beaf4c585e66179f14fac2f63b51f034520 (patch)
treeaa9e45b3b8647ff76d421cc7ae0138c4531c9567 /src/plugins/cmakeprojectmanager
parent89e64b5aedf480133b0837d34408736220d593e3 (diff)
Supply c++11 flags and per-project info to c++ code model.
A manual squash/merge of the changes below, plus a couple of subsequent code fixes. 59085aa5fbb99e2d786cd2c1a06c24a111ccb49f: Modify CppModel::ProjectInfo Adding per project node information, to pass on the correct defines/includes for each file, instead of aggregating them incorrectly. Also split up SOURCES and OBJECTIVE_SOURCES. Also ask the toolchain to convert the compilerflags to flags the codemodel understands, for now only gcc and only c++11. Also make the toolchain aware of the flags used to compile, so that it can emit the correct defines. Note: No header files are passed on. 74028802314cd4e75b41b46407433e07090a304d: GCC: Evaluate cxxflags when checking for predefined macros ebaaa4957e4c02cc9637a998eddae1d0acd74f83: MSVC: Take cxxflags into account when checking for predefined macros 9bfce7e889bcf7bcc47bf880e3ea25945ca7d0d7: Compile fixes Change-Id: I9de94ad038dfc5dc1987732e84b13fb4419c96f5 Reviewed-by: Erik Verbruggen <[email protected]>
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 3b0b3117ea5..d6eb593612e 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -307,18 +307,23 @@ bool CMakeProject::parseCMakeLists()
CPlusPlus::CppModelManagerInterface::instance();
if (modelmanager) {
CPlusPlus::CppModelManagerInterface::ProjectInfo pinfo = modelmanager->projectInfo(this);
- if (pinfo.includePaths != allIncludePaths
- || pinfo.sourceFiles != m_files
- || pinfo.defines != (activeBC->toolChain() ? activeBC->toolChain()->predefinedMacros() : QByteArray())
- || pinfo.frameworkPaths != allFrameworkPaths) {
- pinfo.includePaths = allIncludePaths;
+ if (pinfo.includePaths() != allIncludePaths
+ || pinfo.sourceFiles() != m_files
+ || pinfo.defines() != (activeBC->toolChain() ? activeBC->toolChain()->predefinedMacros(QStringList()) : QByteArray())
+ || pinfo.frameworkPaths() != allFrameworkPaths) {
+ pinfo.clearProjectParts();
+ CPlusPlus::CppModelManagerInterface::ProjectPart::Ptr part(
+ new CPlusPlus::CppModelManagerInterface::ProjectPart);
+ part->includePaths = allIncludePaths;
// TODO we only want C++ files, not all other stuff that might be in the project
- pinfo.sourceFiles = m_files;
- pinfo.defines = (activeBC->toolChain() ? activeBC->toolChain()->predefinedMacros() : QByteArray()); // TODO this is to simplistic
- pinfo.frameworkPaths = allFrameworkPaths;
+ part->sourceFiles = m_files;
+ part->defines = (activeBC->toolChain() ? activeBC->toolChain()->predefinedMacros(QStringList()) : QByteArray()); // TODO this is to simplistic
+ part->frameworkPaths = allFrameworkPaths;
+ part->language = CPlusPlus::CppModelManagerInterface::CXX;
+ pinfo.appendProjectPart(part);
modelmanager->updateProjectInfo(pinfo);
m_codeModelFuture.cancel();
- m_codeModelFuture = modelmanager->updateSourceFiles(pinfo.sourceFiles);
+ m_codeModelFuture = modelmanager->updateSourceFiles(m_files);
}
}
emit buildTargetsChanged();