void PchManager::setPCHInfo(const QList<ProjectPart::Ptr> &projectParts, const PchInfo::Ptr &pchInfo, const QPair<bool, QStringList> &msgs) { QMutexLocker locker(&m_mutex); foreach (ProjectPart::Ptr pPart, projectParts) m_activePchFiles[pPart] = pchInfo; if (pchInfo) { if (msgs.first) { if (!pchInfo->fileName().isEmpty()) emit pchMessage(tr("Successfully generated PCH file \"%1\".").arg( pchInfo->fileName()), Core::MessageManager::Silent); } else { emit pchMessage(tr("Failed to generate PCH file \"%1\".").arg( pchInfo->fileName()), Core::MessageManager::Silent); } if (!msgs.second.isEmpty()) emit pchMessage(msgs.second.join(QLatin1String("\n")), Core::MessageManager::Flash); } }
QPair<bool, QStringList> precompile(const PchInfo::Ptr &pchInfo) { // qDebug() << "*** Precompiling" << pchInfo->inputFileName() // << "into" << pchInfo->fileName() // << "with options" << pchInfo->options(); bool ok = false; Internal::Unit unit(pchInfo->inputFileName()); unit.setCompilationOptions(pchInfo->options()); unsigned parseOpts = CXTranslationUnit_ForSerialization | CXTranslationUnit_Incomplete; unit.setManagementOptions(parseOpts); unit.parse(); if (unit.isLoaded()) ok = CXSaveError_None == unit.save(pchInfo->fileName()); return qMakePair(ok, Internal::formattedDiagnostics(unit)); }