forked from qt-creator/qt-creator
CppTools: honor pre-compiled headers in the code-model.
Task-number: QTCREATORBUG-476 Change-Id: I82ed92acdcda551d2c6a9ca221832ac20117a08f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user