Visual Studio + CMake + Qt Quick: как отлаживать файлы QML? - PullRequest
0 голосов
/ 27 марта 2020

Мой проект строится с использованием CMake. Visual Studio может открывать CMakeLists.txt напрямую, без генерации vcxproj, это очень удобно.

Мой проект также использует Qt и QML. Если вы откроете vcxproj, то подключаемый модуль для Visual Studio - Qt VS Tool позволяет подключить отладчик файлов QML в ваших настройках. И если вы открываете CMakeLists.txt, то Qt VS Tools не работает, и вы должны вручную подключить отладчик. Тем не менее, официальная документация очень лаконична c - о подключении отладчика есть только короткий параграф и он содержит неверную информацию. Из этого документа совершенно неясно, как на самом деле подключить отладчик для отладки QML.

Я пытался сделать так, как это делает Qt VS Tools. Он передает параметры командной строки в отлаженный файл. Я пытался передать те же параметры. В Visual Studio файл launch.vs. json отвечает за параметры запуска в отладчике проекта, встроенного в CMake. Я получил это так:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "MyApp.exe (MyProj\\MyApp.exe)",
      "name": "MyApp.exe (MyProj\\MyApp.exe)",
      "env": "PATH = C:\\Qt\\5.13.0\\msvc2017_64\\bin; ${env.PATH}",
      "args": ["-qmljsdebugger=file:MyApp.exe,block"]
    }
  ]
}

На самом деле, строка "args" отвечает за подключение отладки QML: ["-qmljsdebugger = file: MyApp.exe, block"]. Эта строка копируется из строки, сгенерированной в Qt VS Tools. Только вместо имени файла Qt VS Tool передает туда GUID проекта. Его линия выглядит так: -qmljsdebugger = file: {7A883E87-2CB8-3EB7-9DE4-156F3850167A}, block. CMakeLists.txt не имеет направляющих, поэтому неясно, что следует передавать в параметре файла. Документация утверждает, что это имя файла. Непонятно, почему Qt VS Tools передает туда GUID.

И сборка файла в CMake с такими настройками зависает при запуске в ожидании подключения к нему отладчика. Не ясно, как подключить к нему отладчик, потому что отладчик уже подключен к процессу.

Как правильно подключить отладчик Visual Studio к процессу для отладки файлов QML?

...