CMakePM: Add Debugger -> Start Debugging -> Start CMake Debugging

This is where the user would expect it.

It is an action, so the user can assign a keyboard shortcut if needed.

Change-Id: I4c6db3b1dafb5fb173a07c21d271715310a2b091
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
This commit is contained in:
Cristian Adam
2023-10-02 16:31:57 +02:00
parent ce291a0bc2
commit 7028e27a81
3 changed files with 35 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ const char CMAKE_PROJECT_MIMETYPE[] = "text/x-cmake-project";
const char CMAKE_EDITOR_ID[] = "CMakeProject.CMakeEditor";
const char RUN_CMAKE[] = "CMakeProject.RunCMake";
const char RUN_CMAKE_PROFILER[] = "CMakeProject.RunCMakeProfiler";
const char RUN_CMAKE_DEBUGGER[] = "CMakeProject.RunCMakeDebugger";
const char CLEAR_CMAKE_CACHE[] = "CMakeProject.ClearCache";
const char RESCAN_PROJECT[] = "CMakeProject.RescanProject";
const char RUN_CMAKE_CONTEXT_MENU[] = "CMakeProject.RunCMakeContextMenu";
@@ -24,6 +25,7 @@ const char CMAKEFORMATTER_SETTINGS_GROUP[] = "CMakeFormatter";
const char CMAKEFORMATTER_GENERAL_GROUP[] = "General";
const char CMAKEFORMATTER_ACTION_ID[] = "CMakeFormatter.Action";
const char CMAKEFORMATTER_MENU_ID[] = "CMakeFormatter.Menu";
const char CMAKE_DEBUGGING_GROUP[] = "Debugger.Group.CMake";
const char PACKAGE_MANAGER_DIR[] = ".qtc/package-manager";

View File

@@ -53,6 +53,7 @@ CMakeManager::CMakeManager()
, m_reloadCMakePresetsAction(
new QAction(Utils::Icons::RELOAD.icon(), Tr::tr("Reload CMake Presets"), this))
, m_cmakeProfilerAction(new QAction(QIcon(), Tr::tr("CMake Profiler"), this))
, m_cmakeDebuggerAction(new QAction(QIcon(), Tr::tr("Start CMake Debugging"), this))
{
Core::ActionContainer *mbuild =
Core::ActionManager::actionContainer(ProjectExplorer::Constants::M_BUILDPROJECT);
@@ -64,6 +65,8 @@ CMakeManager::CMakeManager()
Core::ActionManager::actionContainer(ProjectExplorer::Constants::M_FILECONTEXT);
Core::ActionContainer *manalyzer =
Core::ActionManager::actionContainer(Debugger::Constants::M_DEBUG_ANALYZER);
Core::ActionContainer *mdebugger =
Core::ActionManager::actionContainer(ProjectExplorer::Constants::M_DEBUG_STARTDEBUGGING);
const Core::Context projectContext(CMakeProjectManager::Constants::CMAKE_PROJECT_ID);
const Core::Context globalContext(Core::Constants::C_GLOBAL);
@@ -145,8 +148,32 @@ CMakeManager::CMakeManager()
runCMakeWithProfiling(ProjectManager::startupBuildSystem());
});
// CMake Debugger
mdebugger->appendGroup(Constants::CMAKE_DEBUGGING_GROUP);
mdebugger->addSeparator(Core::Context(Core::Constants::C_GLOBAL),
Constants::CMAKE_DEBUGGING_GROUP,
&m_cmakeDebuggerSeparator);
command = Core::ActionManager::registerAction(m_cmakeDebuggerAction,
Constants::RUN_CMAKE_DEBUGGER,
globalContext);
command->setDescription(m_cmakeDebuggerAction->text());
mdebugger->addAction(command, Constants::CMAKE_DEBUGGING_GROUP);
connect(m_cmakeDebuggerAction, &QAction::triggered, this, [] {
ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DAP_CMAKE_DEBUG_RUN_MODE,
false);
});
connect(ProjectManager::instance(), &ProjectManager::startupProjectChanged, this, [this] {
updateCmakeActions(ProjectTree::currentNode());
auto cmakeBuildSystem = static_cast<CMakeBuildSystem*>(ProjectManager::startupBuildSystem());
if (cmakeBuildSystem) {
const BuildDirParameters parameters(cmakeBuildSystem);
const auto tool = parameters.cmakeTool();
CMakeTool::Version version = tool ? tool->version() : CMakeTool::Version();
m_canDebugCMake = (version.major == 3 && version.minor >= 27) || version.major > 3;
}
});
connect(BuildManager::instance(), &BuildManager::buildStateChanged, this, [this] {
updateCmakeActions(ProjectTree::currentNode());
@@ -169,6 +196,9 @@ void CMakeManager::updateCmakeActions(Node *node)
m_rescanProjectAction->setVisible(visible);
m_cmakeProfilerAction->setEnabled(visible);
m_cmakeDebuggerAction->setEnabled(m_canDebugCMake && visible);
m_cmakeDebuggerSeparator->setVisible(m_canDebugCMake && visible);
const bool reloadPresetsVisible = [project] {
if (!project)
return false;

View File

@@ -41,6 +41,9 @@ private:
QAction *m_reloadCMakePresetsAction;
Utils::ParameterAction *m_buildFileAction;
QAction *m_cmakeProfilerAction;
QAction *m_cmakeDebuggerAction;
QAction *m_cmakeDebuggerSeparator;
bool m_canDebugCMake = false;
};
} // namespace Internal