【问题标题】:Why is "C/C++:" being inserted into the label of my tasks.json file in Visual Studio Code?为什么“C/C++:”被插入到 Visual Studio Code 中我的 tasks.json 文件的标签中?
【发布时间】:2020-07-31 13:32:07
【问题描述】:

我正在使用带有 MinGW-w64 的 Visual Studio Code。这涉及创建两个文件(launch.json 和 tasks.json),它们允许我构建和调试我的 C++ 代码。我通过转到终端 --> 配置默认构建任务...然后选择“C/C++:g++.exe 构建活动文件”来选择我的 tasks.json 文件。

通常,tasks.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 构建活动文件'。

唯一明显的区别是 C/C++ 现在在 "label" 行中位于 g++.exe build active file 之前。删除此标签后,我就可以获取代码进行编译和/或调试。

这导致我问两个问题:首先,为什么C/C++ 会被插入标签中?它没有出现在使用 Visual Studio 代码设置 MinGW 的 Microsoft 文档中:https://code.visualstudio.com/docs/cpp/config-mingw

其次,我怎样才能从我的标签中永久删除C/C++,这样我就不必每次都手动删除它?我尝试在下拉菜单的配置默认构建任务中选择 C/C++:g++.exe 构建活动文件旁边的配置任务;删除 C/C++,然后保存 tasks.json 文件,但这似乎不会导致构建任务永久更改。

一如既往地感谢您的帮助。

【问题讨论】:

    标签: c++ json debugging visual-studio-code task


    【解决方案1】:

    看了cpptools扩展的源代码花了我一段时间,然后发现了一些问题。在不同的条件下,扩展有不同的响应

    如果文件夹根目录下有“.vscode”文件夹,那么添加调试配置时,只会引导launch.json的创建。需要引导用户重新配置“tasks.json”。但此时创建的任务名称与“preLaunchTask”的值不一致。这是此扩展程序的问题。我认为原因是初始化调试配置时没有找到“.vscode”文件夹,执行扩展代码时缺少某些条件

    如果文件夹根目录下有空的“.vscode”文件夹,初始化调试配置时会同时创建“launch.json”和“tasks.json”。这两个文件完全一样匹配,不需要任何修改

    如果用户首先配置任务。初始化调试配置时,扩展程序将重新创建一个名为“g++.exe build active file”的任务,它不是以“C/C++”开头的。这当然可以,但是您可能需要删除开始创建的尚未使用的任务 这种设计是合理的,因为“C/C++:g++.exe构建活动文件”实际上是cpptools内置的一个任务模板(还有两个)。 “preLaunchTask”可以引用内置模板,但用户在“tasks.json”中看不到它们 如果您删除文件“tasks.json”并将“preLaunchTask”的值更改为“C:C++: g++.exe build active file”。它也可以,但这不是标准用法

    【讨论】:

      【解决方案2】:

      我认为这是他们的错误,它在最近的版本之后开始出现

      【讨论】:

      • 我希望它会尽快得到纠正。有什么方法可以让我自己更正模板,还是需要继续手动更改表单的每个实例?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 2015-09-02
      • 2021-06-11
      • 2023-01-20
      • 2018-06-26
      • 1970-01-01
      相关资源
      最近更新 更多