wbc10315558 2024-12-18 11:43 采纳率: 0%
浏览 15

VSCode如何修改生成前命令

img


在vscode编译c程序之前,会自动执行chcp 65001这个命令,如果我希望将其改为chcp 936,请问我应当到何处去修改这个设置?
我曾尝试去launch.json中寻找,但是这个文件只能修改&&之后的命令,而在之前执行的命令,没有找到可以修改的地方。

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-12-18 12:12
    关注
    让码农阿豪来帮你解答,本回答参考通义千问qwen-plus模型编写提供,如果还有疑问可以评论或留言
    要将 VSCode 编译 C 程序时自动执行的 `chcp` 命令从 `chcp 65001` 改为 `chcp 936`,你需要修改 VSCode 的任务配置文件 `tasks.json`。这个文件位于你的工作区的 `.vscode` 文件夹中。

    步骤如下:

    1. 打开 VSCode

      • 打开你的项目文件夹。
    2. 打开任务配置文件

      • Ctrl+Shift+P(或 Cmd+Shift+P 在 macOS 上)打开命令面板。
      • 输入 Tasks: Configure Task 并选择它。
      • 如果你还没有 tasks.json 文件,VSCode 会提示你创建一个。
    3. 编辑 tasks.json 文件

      • 找到 tasks.json 文件并打开它。
      • 查找与编译 C 程序相关的任务配置。
    4. 修改 preLaunchTaskcommand

      • 如果你的任务配置中有一个 preLaunchTask,你可以在这个任务中添加或修改 chcp 命令。
      • 如果没有 preLaunchTask,你可以在 command 字段中直接修改。

    示例 tasks.json 配置

    假设你有一个 tasks.json 文件,内容如下:

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "build",
                "type": "shell",
                "command": "gcc",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "problemMatcher": ["$gcc"]
            }
        ]
    }
    

    你可以修改为:

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "build",
                "type": "shell",
                "command": "chcp 936 && gcc",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "problemMatcher": ["$gcc"]
            }
        ]
    }
    

    解释

    • command: 这里我们修改了命令,使其先执行 chcp 936,然后再执行 gcc 编译命令。
    • args: 编译器的参数保持不变。

    另一种方法:使用 preLaunchTask

    如果你希望在启动调试会话之前执行 chcp 936,你可以在 launch.json 中配置一个 preLaunchTask

    1. 打开 launch.json 文件

      • Ctrl+Shift+P(或 Cmd+Shift+P 在 macOS 上)打开命令面板。
      • 输入 Debug: Open launch.json 并选择它。
    2. 编辑 launch.json 文件

      • 添加一个 preLaunchTask,指向一个任务配置。
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "gcc build and debug active file",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "set-codepage",
                "postDebugTask": ""
            }
        ]
    }
    
    1. 创建 set-codepage 任务
      • tasks.json 中添加一个新的任务配置。
    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "set-codepage",
                "type": "shell",
                "command": "chcp 936"
            },
            {
                "label": "build",
                "type": "shell",
                "command": "gcc",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "problemMatcher": ["$gcc"],
                "dependsOn": "set-codepage"
            }
        ]
    }
    

    解释

    • preLaunchTask: 指向 set-codepage 任务,在启动调试会话之前执行。
    • set-codepage 任务: 单独定义了一个任务,用于设置代码页为 936。
    • dependsOn: 在 build 任务中指定了依赖于 set-codepage 任务,确保在编译之前设置代码页。

    通过以上步骤,你就可以成功地将 VSCode 编译 C 程序时自动执行的 chcp 命令从 chcp 65001 改为 chcp 936

    评论

报告相同问题?

问题事件

  • 创建了问题 12月18日