forked from qt-creator/qt-creator
CMakeProjectManager: Add File System virtual folder
If a CMake project cannot be parsed by CMake, it is practically unusable in Qt Creator. According to discussion in QTCREATORBUG-24677, a virtual folder with the project's file system view is added to the project manager as a convenience feature. Fixes: QTCREATORBUG-24677 Change-Id: I48775bb89c704d3f7e5bb21ec6481bd5cc0f4b6c Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -517,11 +517,11 @@ void CMakeBuildSystem::clearCMakeCache()
|
||||
Utils::FileUtils::removeRecursively(cmakeFiles);
|
||||
}
|
||||
|
||||
std::unique_ptr<CMakeProjectNode>
|
||||
CMakeBuildSystem::generateProjectTree(const QList<const FileNode *> &allFiles)
|
||||
std::unique_ptr<CMakeProjectNode> CMakeBuildSystem::generateProjectTree(
|
||||
const QList<const FileNode *> &allFiles, bool includeHeaderNodes)
|
||||
{
|
||||
QString errorMessage;
|
||||
auto root = m_reader.generateProjectTree(allFiles, errorMessage);
|
||||
auto root = m_reader.generateProjectTree(allFiles, errorMessage, includeHeaderNodes);
|
||||
checkAndReportError(errorMessage);
|
||||
return root;
|
||||
}
|
||||
@@ -535,6 +535,8 @@ void CMakeBuildSystem::combineScanAndParse()
|
||||
if (m_combinedScanAndParseResult) {
|
||||
updateProjectData();
|
||||
m_currentGuard.markAsSuccess();
|
||||
} else {
|
||||
updateFallbackProjectData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -590,7 +592,7 @@ void CMakeBuildSystem::updateProjectData()
|
||||
|
||||
Project *p = project();
|
||||
{
|
||||
auto newRoot = generateProjectTree(m_allFiles);
|
||||
auto newRoot = generateProjectTree(m_allFiles, true);
|
||||
if (newRoot) {
|
||||
setRootProjectNode(std::move(newRoot));
|
||||
CMakeConfigItem settingFileItem;
|
||||
@@ -671,6 +673,18 @@ void CMakeBuildSystem::updateProjectData()
|
||||
qCDebug(cmakeBuildSystemLog) << "All CMake project data up to date.";
|
||||
}
|
||||
|
||||
void CMakeBuildSystem::updateFallbackProjectData()
|
||||
{
|
||||
qCDebug(cmakeBuildSystemLog) << "Updating fallback CMake project data";
|
||||
|
||||
QTC_ASSERT(m_treeScanner.isFinished() && !m_reader.isParsing(), return );
|
||||
|
||||
auto newRoot = generateProjectTree(m_allFiles, false);
|
||||
setRootProjectNode(std::move(newRoot));
|
||||
|
||||
qCDebug(cmakeBuildSystemLog) << "All fallback CMake project data up to date.";
|
||||
}
|
||||
|
||||
void CMakeBuildSystem::handleParsingSucceeded()
|
||||
{
|
||||
if (!cmakeBuildConfiguration()->isActive()) {
|
||||
|
||||
Reference in New Issue
Block a user