Правильное использование VS_DEBUGGER_WORKING_DIRECTORY и т. Д. - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь использовать новые свойства VS_DEBUGGER_WORKING_DIRECTORY и VS_DEBUGGER_COMMAND для облегчения отладки в сгенерированном CMake файле проекта Visual Studio (в моем случае Visual Studio 2013).

Все остальное в моей конфигурации работает, кроме этого ...

Я заметил из «обычных» файлов проекта Visual Studio (то есть файлов, которые не были сгенерированы из CMake), что в диалоговом окне «Свойства конфигурации / отладка» поля «Команда» и «Рабочий каталог» заполняются по умолчанию с помощью $ (TargetPath) и $ (TargetDir) соответственно. Итак, в моем файле CMakeLists.txt у меня есть:

set_target_properties(myApplication PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "$(TargetDir)"
                                               VS_DEBUGGER_COMMAND                    "$(TargetPath)"
                                               VS_DEBUGGER_ENVIRONMENT              "%PATH%;C:\\Qt\\5.9.7\\msvc2013_64\\bin")

[На самом деле я пробовал это с кавычками около $ (TargetDir) и $ (TargetPath) и без них, и результат каждый раз один и тот же; они абсолютно необходимы на пути.]

Что происходит, когда я собираю приложение, захожу в диалоговое окно «Свойства конфигурации / отладка» и проверяю, что оно выглядит точно так же, как и обычный файл проекта, где $ (TargetDir) и $ (TargetPath) появляются именно там, где они должны сделать. Это не работает, хотя; при попытке отладки появляется сообщение «Невозможно начать отладку. Проверьте настройки отладчика ...»

Initial failure; the fields are populated correctly, but no debugging ensues

Поэтому я удаляю текст $ (TargetDir) и $ (TargetPath) из диалогового окна, затем снова набираю их точно так же, как и раньше: и тогда он отлично работает.

Deleted the fields, and typed them in again exactly as before; now it works

Что я делаю не так?

1 Ответ

2 голосов
/ 17 апреля 2019

Оказывается, что решение состоит в том, чтобы заменить "$ (TargetPath)" и "$ (TargetDir)" на выражения генератора CMake "$<TARGET_FILE:myApplication>" и "$<TARGET_FILE_DIR:myApplication>" соответственно, а именно:

set_target_properties(myApplication PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "$<TARGET_FILE_DIR:myApplication>"
                                               VS_DEBUGGER_COMMAND           "$<TARGET_FILE:myApplication>"
                                               VS_DEBUGGER_ENVIRONMENT       "PATH=%PATH%;${CMAKE_PREFIX_PATH}/bin")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...