Почему «C / C ++:» вставляется в метку моих задач. json файл в коде Visual Studio? - PullRequest
1 голос
/ 18 апреля 2020

Я использую код Visual Studio с MinGW-w64. Это включает в себя создание двух файлов (запуск. json и задачи. json), которые позволяют мне создавать и отлаживать мой код C ++. Я выбираю файл своих задач. json, перейдя в Терминал -> Настроить задачу сборки по умолчанию ... и затем выбрав «C / C ++: g ++. Exe build active file».

Обычно задачи. Файл json выглядит следующим образом:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++.exe build active file",
            "command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]
}

Однако в последние несколько дней он выглядел следующим образом:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        }
    ]
}

Когда файл в этом формате, я ' Я не могу отладить мой код. Вместо этого я получаю сообщение «Не удалось найти задачу« g ++. Exe build active file ».

Единственное очевидное отличие состоит в том, что C/C++ теперь предшествует g++.exe build active file в строке "label". Я удаляю этот ярлык, я могу получить код для компиляции и / или отладки.

Это заставляет меня задать два вопроса: во-первых, почему C/C++ вставляется в ярлык? не появляется в документации Microsoft по настройке MinGW с кодом Visual Studio: https://code.visualstudio.com/docs/cpp/config-mingw

Во-вторых, как я могу навсегда удалить C/C++ с моего ярлыка, чтобы я не мог Вам нужно вручную удалять его каждый раз? Я попытался выбрать Настроить задачу рядом с C / C ++: активный файл сборки g ++. exe в Настроить задачи сборки по умолчанию в раскрывающемся меню; удалить C/C++, а затем сохранить задачи. json файла, но, похоже, это не приводит к постоянному изменению задачи сборки.

Как всегда, спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Мне потребовалось некоторое время, чтобы прочитать исходный код расширения cpptools, а затем я обнаружил некоторые проблемы. При других условиях расширение имеет различный ответ

Если в папке root есть папка «.vscode», то при добавлении конфигурации отладки она будет только направлять создание запуска. json Пользователю необходимо снова настроить «задачи. json». Но имя задачи, созданной в это время, не соответствует значению «preLaunchTask». Это проблема с этим расширением. Я думаю, причина в том, что папка ".vscode" не была найдена при инициализации конфигурации отладки, при выполнении кода расширения отсутствуют некоторые условия

Если в папке * есть пустая папка ".vscode" 1011 * каталог папки, "launch. json" и "tasks. json" будут созданы одновременно при инициализации конфигурации отладки. Два файла точно совпадают и не нуждаются в каких-либо изменениях

Если пользователь настраивает задачу как первую. При инициализации конфигурации отладки расширение воссоздает задачу под названием «g ++. Exe build active file», которая не начинается с «C / C ++». Это, конечно, работает, но вам может понадобиться удалить задачу, созданную в начале, но она не использовалась. Это разумно, потому что «C / C ++: g ++. exe build active file» на самом деле является шаблоном задачи, встроенным в cpptools (есть еще два). На встроенные шаблоны можно ссылаться с помощью «preLaunchTask», но пользователь не может видеть их в «задачах». json «Если вы удалите файл« tasks. json »и измените значение« preLaunchTask »на« C: C ++: g ++. Exe build active file ". Это также работает, но это не стандартное использование

0 голосов
/ 21 апреля 2020

Я думаю, что это их ошибка, она начала появляться после последней версии

...