diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-09-30 13:36:01 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-10-01 13:02:45 +0200 |
commit | 507452f0971105e772e2c4913720cdd136ed2ca9 (patch) | |
tree | 230680e9d1a7c550770be5592121e71ab28aef61 /src/plugins/cpptools/cppsnapshotupdater.cpp | |
parent | 6603d9ae5fca16b0797709e9ba47bd47fd67ec3f (diff) | |
download | qt-creator-507452f0971105e772e2c4913720cdd136ed2ca9.tar.gz |
CppTools: honor pre-compiled headers in the code-model.
Task-number: QTCREATORBUG-476
Change-Id: I82ed92acdcda551d2c6a9ca221832ac20117a08f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppsnapshotupdater.cpp')
-rw-r--r-- | src/plugins/cpptools/cppsnapshotupdater.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
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<CppModelManager *>(CppModelManagerInterface::instance()); |