From 3ab2da691df5f43b94effc6266c7642df65fdcf0 Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Thu, 3 Aug 2023 14:39:33 +0200 Subject: [PATCH] DAP: Add check that cmake 3.27 or higher If CMake version is lower then 3.27 - Shows the warning in general message - Starts CMake without debugging - Stops debugging correctly Change-Id: Ibb13555c20ae2961c0a3c2ef6ec0fcc25930dddc Reviewed-by: hjk Reviewed-by: --- .../cmakeprojectmanager/cmakebuildsystem.cpp | 6 +++++- src/plugins/debugger/dap/cmakedapengine.cpp | 13 +++++++++++++ src/plugins/debugger/dap/dapengine.cpp | 2 +- src/plugins/debugger/debuggerplugin.cpp | 4 ++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index d269c1b607d..8e693ba331c 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -191,11 +191,15 @@ void CMakeBuildSystem::triggerParsing() // active code model updater when the next one will be triggered. m_cppCodeModelUpdater->cancel(); + const CMakeTool *tool = m_parameters.cmakeTool(); + CMakeTool::Version version = tool ? tool->version() : CMakeTool::Version(); + const bool isDebuggable = (version.major == 3 && version.minor >= 27) || version.major > 3; + qCDebug(cmakeBuildSystemLog) << "Asking reader to parse"; m_reader.parse(reparseParameters & REPARSE_FORCE_CMAKE_RUN, reparseParameters & REPARSE_FORCE_INITIAL_CONFIGURATION, reparseParameters & REPARSE_FORCE_EXTRA_CONFIGURATION, - reparseParameters & REPARSE_DEBUG); + (reparseParameters & REPARSE_DEBUG) && isDebuggable); } void CMakeBuildSystem::requestDebugging() diff --git a/src/plugins/debugger/dap/cmakedapengine.cpp b/src/plugins/debugger/dap/cmakedapengine.cpp index 0775b05004f..d4e766521cf 100644 --- a/src/plugins/debugger/dap/cmakedapengine.cpp +++ b/src/plugins/debugger/dap/cmakedapengine.cpp @@ -3,6 +3,8 @@ #include "cmakedapengine.h" +#include + #include #include @@ -14,6 +16,7 @@ #include #include #include +#include using namespace Core; using namespace Utils; @@ -112,6 +115,16 @@ void CMakeDapEngine::setupEngine() [this] { m_dataGenerator->start(); }); ProjectExplorer::ProjectTree::currentBuildSystem()->requestDebugging(); + + QTimer::singleShot(5000, this, [this] { + if (!m_dataGenerator->isRunning()) { + m_dataGenerator->kill(); + MessageManager::writeDisrupting( + "CMake server is not running. Please check that your CMake is 3.27 or higher."); + return; + } + }); + notifyEngineSetupOk(); } diff --git a/src/plugins/debugger/dap/dapengine.cpp b/src/plugins/debugger/dap/dapengine.cpp index 075eb908c36..be299018d2c 100644 --- a/src/plugins/debugger/dap/dapengine.cpp +++ b/src/plugins/debugger/dap/dapengine.cpp @@ -41,8 +41,8 @@ #include #include -#include #include +#include #include #include diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 6e557c4c2b2..9c313d45d16 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -830,8 +830,8 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments) }); connect(&m_startCmakeAction, &QAction::triggered, this, [] { -// ProjectTree::currentBuildSystem()->requestDebugging(); - ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::CMAKE_DEBUG_RUN_MODE, true); + ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::CMAKE_DEBUG_RUN_MODE, + true); }); connect(&m_debugWithoutDeployAction, &QAction::triggered, this, [] {