diff options
author | Erik Verbruggen <[email protected]> | 2012-02-16 15:09:56 +0100 |
---|---|---|
committer | Erik Verbruggen <[email protected]> | 2012-02-16 15:17:17 +0100 |
commit | 3aab8beaf4c585e66179f14fac2f63b51f034520 (patch) | |
tree | aa9e45b3b8647ff76d421cc7ae0138c4531c9567 /src/plugins/cmakeprojectmanager | |
parent | 89e64b5aedf480133b0837d34408736220d593e3 (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.cpp | 23 |
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(); |