在 Windows 上使用 Cygwin64 编译器和调试器为 C 设置 VS 代码

Setting up VS Code for C using Cygwin64 Compiler and Debugger on Windows

想要设置 VS Code 以使用 Cygwin/Cygwin64。 已经设置了这些:

  1. 已在 windows
  2. 上安装 Cygwin64
  3. 已从 Cygwin 安装程序安装 gcc(编译器)和 gdb(调试器)包
  4. GCC 和 GDB NOT 在 windows 路径中。
  5. 已安装Visual Studio代码

发布这个是因为我花了几天时间从多个不同的来源来设置它。 这是专门针对安装了 Cygwin/Cygwin64 的 Windows。

免责声明:我只针对构建单个文件测试过它。

此处的说明用于在 VS Code 上进行设置

  1. 在 VS Code 上安装扩展 C/C++
Name: C/C++
Id: ms-vscode.cpptools
Description: C/C++ IntelliSense, debugging, and code browsing.
Version: 0.23.1
Publisher: Microsoft
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
  1. 如果您已有工作区,请跳过此步骤。

    创建一个文件夹并将此文件夹添加到 VS Code 中。然后保存工作区。

  2. 设置launch.json

    转到 "Debug > Open Configurations",这应该会打开 launch.json 文件。下面是我的配置。如果您正在对此进行测试并且不确定自己在做什么,我建议您在替换内容之前将原始内容保存在某个地方。

    注意:"preLaunchTask": "gcc.exe build active file" 运行标记为 "gcc.exe build active file" 的任务。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [
                {
                    "name": "PATH",
                    "value": "%PATH%;z:\cygwin64\bin"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\cygwin64\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": { "engineLogging": true }, //optional
            "preLaunchTask": "gcc.exe build active file"
        }
    ]
}
  1. 设置task.json

    转到 "Terminal > Configure Tasks..." 和 select "gcc.exe build active file"

    "args" 中的各种“-W”标志旨在使编译器更加严格。如果您愿意,可以删除它们。

{
    "tasks": [
        {
            "type": "shell",
            "label": "gcc.exe build active file",
            "command": "C:\cygwin64\bin\gcc.exe",
            "args": [
                "-g",
                "-o",
                "${fileDirname}\${fileBasenameNoExtension}.exe",
                "-Werror", // Optional
                "-Wall", // Optional
                "-Wextra", // Optional
                "-ansi", // Optional
                "-pedantic", // Optional
                "${file}"
            ],
            "options": {
                "cwd": "C:\cygwin64\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
    ],
    "version": "2.0.0"
}
  1. 构建和调试活动文件

    转到您要构建的 C 文件,按 Ctrl+Shift+P 以获得 "Command Palette > C/C++ Build and Debug Active File > gcc.exe build active file",或者如果您只想构建,则转到 "Terminal > Run Build Task".

Cygwin64 效率低下,因为它使用的是中等内存模型。这使得它使用 64 位绝对地址而不是静态数据的 32 位相对地址。

我建议使用 Visual Studio 的 Clang 插件,除非您有特定的理由使用 Cygwin64。参见 https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/

您还可以在使用 Clang 插件时摆脱 cygwin DLL。