From 507452f0971105e772e2c4913720cdd136ed2ca9 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Mon, 30 Sep 2013 13:36:01 +0200 Subject: CppTools: honor pre-compiled headers in the code-model. Task-number: QTCREATORBUG-476 Change-Id: I82ed92acdcda551d2c6a9ca221832ac20117a08f Reviewed-by: Nikolai Kosjar --- src/plugins/cpptools/cppsnapshotupdater.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/plugins/cpptools/cppsnapshotupdater.cpp') diff --git a/src/plugins/cpptools/cppsnapshotupdater.cpp b/src/plugins/cpptools/cppsnapshotupdater.cpp index f12f888af7..473ec66b60 100644 --- a/src/plugins/cpptools/cppsnapshotupdater.cpp +++ b/src/plugins/cpptools/cppsnapshotupdater.cpp @@ -39,6 +39,7 @@ using namespace CppTools::Internal; SnapshotUpdater::SnapshotUpdater(const QString &fileInEditor) : m_mutex(QMutex::Recursive) , m_fileInEditor(fileInEditor) + , m_usePrecompiledHeaders(false) { } @@ -56,6 +57,7 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy) QByteArray configFile = modelManager->codeModelConfiguration(); QStringList includePaths; QStringList frameworkPaths; + QStringList precompiledHeaders; updateProjectPart(); @@ -63,6 +65,8 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy) configFile += m_projectPart->defines; includePaths = m_projectPart->includePaths; frameworkPaths = m_projectPart->frameworkPaths; + if (m_usePrecompiledHeaders) + precompiledHeaders = m_projectPart->precompiledHeaders; } if (configFile != m_configFile) { @@ -81,6 +85,11 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy) invalidateSnapshot = true; } + if (precompiledHeaders != m_precompiledHeaders) { + m_precompiledHeaders = precompiledHeaders; + invalidateSnapshot = true; + } + unsigned rev = 0; if (Document::Ptr doc = document()) rev = doc->revision(); @@ -130,6 +139,9 @@ void SnapshotUpdater::update(CppModelManager::WorkingCopy workingCopy) preproc.setIncludePaths(m_includePaths); preproc.setFrameworkPaths(m_frameworkPaths); preproc.run(configurationFileName); + if (m_usePrecompiledHeaders) + foreach (const QString &precompiledHeader, m_precompiledHeaders) + preproc.run(precompiledHeader); preproc.run(m_fileInEditor); m_snapshot = preproc.snapshot(); @@ -159,6 +171,13 @@ Document::Ptr SnapshotUpdater::document() const return m_snapshot.document(m_fileInEditor); } +void SnapshotUpdater::setUsePrecompiledHeaders(bool usePrecompiledHeaders) +{ + QMutexLocker locker(&m_mutex); + + m_usePrecompiledHeaders = usePrecompiledHeaders; +} + void SnapshotUpdater::updateProjectPart() { CppModelManager *cmm = dynamic_cast(CppModelManagerInterface::instance()); -- cgit v1.2.1