如何使用 CMake 项目调试 QML

How to debug QML with a CMake project

本文关键字:调试 QML 项目 CMake 何使用      更新时间:2023-10-16

我已经设置了标志 -DQT_QML_DEBUG并在"构建并运行>运行调试器设置"(我的翻译(中选中了"启用 QML">但我仍然无法使用调试器。指令指针只是不显示,文本视图不跟随指令指针。此外,我在启动时收到以下警告:

Warning: "QML Debugger: Invalid argument 'services:DebugMessages' detected. Ignoring the same."
Warning: "QML Debugger: Invalid argument 'QmlDebugger' detected. Ignoring the same."
Warning: "QML Debugger: Invalid argument 'V8Debugger' detected. Ignoring the same."
Warning: "QML Debugger: Invalid argument 'QmlInspector' detected. Ignoring the same."
QML Debugger: Waiting for connection on port 39750...

编辑:环境是archlinux,因此是最新版本。

编译 qml 文件需要禁用以进行调试。

FIND_PACKAGE(Qt5QuickCompiler QUIET)
IF(Qt5QuickCompiler_FOUND AND NOT CMAKE_BUILD_TYPE MATCHES Debug AND NOT CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
  QTQUICK_COMPILER_ADD_RESOURCES(RESOURCES qml.qrc)
ELSE()
  SET(RESOURCES qml.qrc)
ENDIF()
ADD_EXECUTABLE(my_target_name
  ...
  ${RESOURCES}
)

目标需要用QT_QML_DEBUG来构建

TARGET_COMPILE_DEFINITIONS(my_target_name
  PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)

这应该在不玩QQmlDebuggingEnabler的情况下工作

除了前两个步骤之外,

添加
#include <QQmlDebuggingEnabler>
...
QQmlDebuggingEnabler enabler;

到项目的主要.cpp。

这对我有帮助,尽管我还没有看到您的确切警告消息。

来自>调试器设置>运行的项目取消选择并重新选择启用C++和启用 QML

这对我在曼扎罗山上有用