VS Code configura el entorno de desarrollo C/C++

1. Descarga de programas

El software que debe descargarse es el siguiente:

  • Código VS
  • Herramientas de compilación: MinGW o MSYS2 o VS2022

Dirección de descarga de VS Code: enlace
Dirección de descarga de MinGW: enlace o enlace
Dirección de descarga de MSYS2: enlace
Dirección de descarga de VS2022: enlace

Después de descargar el software anterior, se pueden instalar los pasos de instalación. Se recomienda elegir MinGW como herramienta de compilación. Si instala MinGW, puede usar el compilador GCC y si instala VS2022, puede usar el compilador MSVC.

2. Configuración del entorno

1. Agregar variables de entorno

Agregue la carpeta MinGWde a las variables de entorno de su sistema. Si se ejecuta el siguiente código en la línea de comandos y no aparece ningún mensaje de error, la superficie se agrega correctamente.binPATH

gcc --version
g++ --version
gdb --version

La salida es la siguiente:
inserte la descripción de la imagen aquí

2. Instale el complemento de código VS

Se deben instalar tres complementos, a saber:

  • C/C++
  • Paquete de extensión C/C++
  • Atom One Dark Theme (opcional, para los colores del tema del código)

inserte la descripción de la imagen aquí

3. Parámetros del compilador

1. CCG

parámetro ilustrar ejemplo
-C Solo compile archivos de origen, genere archivos de objetos, no enlace
-o Especifique el nombre del archivo de salida -o build\${fileBasenameNoExtension}.exe
-I <incluir_ruta> Agregar ruta de búsqueda de archivo de encabezado -I ${carpeta del espacio de trabajo}/incluir
-L <ruta_biblioteca> Agregar ruta de búsqueda de archivos de biblioteca -L ${carpeta del espacio de trabajo}/lib
-l <nombre_biblioteca> Vincular el archivo de biblioteca especificado -lgdi32
-gramo Generar información de depuración
-std= Especifica el estándar de idioma utilizado -std=c11、-std=c++14
-O Especifique el nivel de optimización, el nivel puede ser 0, 1, 2, 3, s
-Muro mostrar todas las advertencias
-Werror tratar las advertencias como errores
-pthread Habilitar soporte para subprocesos múltiples
-lm vincular la biblioteca de matemáticas
-mwindows quitar la ventana de la consola

2. MSVC

parámetro ilustrar ejemplo
/C Solo compile archivos fuente, no enlace para generar archivos ejecutables
/EHsc Habilitar la compatibilidad con el manejo de excepciones de C++
/F+ruta Especifica la ruta del archivo intermedio /Fo${workspaceFolder}\build\${fileBasenameNoExtension}.obj
/Fe+ruta Especificar la ruta del archivo de destino /Fe${workspaceFolder}\build\${fileBasenameNoExtension}.exe
/I Agregar directorio de archivos de inclusión
/D+nombre[=valor] Definir macros de preprocesamiento
/w establecer el nivel de advertencia
/O establecer el nivel de optimización
/Día Generar información de depuración
/MARYLAND Uso de bibliotecas de tiempo de ejecución vinculadas dinámicamente
/MONTE Vinculación estática de la biblioteca en tiempo de ejecución con subprocesos múltiples
/enlace pasar opciones del enlazador
/PAG Generar salida preprocesada
/mostrarIncluye mostrar archivos incluidos
/? mostrar información de ayuda

4. Archivo de configuración

Puede consultar el enlace
del artículo para ejecutar código C/C++ en VS Code, puede usar archivos de configuración para especificar: ruta del archivo de encabezado, ruta del archivo de la biblioteca, ruta del compilador, etc. Los archivos de configuración pueden generarse automáticamente o configurarse manualmente, pero la mayoría de las veces los archivos de configuración generados automáticamente no pueden cumplir con nuestros requisitos, por lo que debemos configurarlos manualmente con más frecuencia. Incluye principalmente tres archivos de configuración: c_cpp_properties.json, tasks.jsony launch.jsonlas funciones de los tres archivos de configuración son las siguientes:

  • c_cpp_properties.json: configure la ruta del compilador y la ruta de búsqueda del archivo de encabezado para las extensiones C/C++ para garantizar el funcionamiento normal del análisis de código e IntelliSense
  • tasks.json: configurar tareas de ejecución, comandos personalizados o scripts ejecutados en el editor
  • launch.json: configure los ajustes de inicio y depuración del depurador

1. Configuración básica

c_cpp_properties.json

{
    
    
    "configurations": [
        // 32{
    
    
            "name": "Win32", // 当前配置的名称
            "includePath": [
                "${workspaceFolder}/**",
                "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\include" // 编译器的头文件路径
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            // 此处是你的 Windows SDK 版本号
            "windowsSdkVersion": "10.0.20348.0",
            // 此处是编译器的地址
            "compilerPath": "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x86\\cl.exe",
            "cStandard": "c17", // C 标准 
            "cppStandard": "c++17", // C++ 标准
            "intelliSenseMode": "windows-msvc-x86" // 智能感知的模式
        },
        // x64位
        {
    
    
            "name": "x64",
            "includePath": [
                "${workspaceFolder}/**",
                "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\include" // 编译器的头文件路径
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            // 此处是你的 Windows SDK 版本号
            "windowsSdkVersion": "10.0.20348.0",
            // 此处是编译器的地址
            "compilerPath": "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x64\\cl.exe",
            "cStandard": "c17", // C 标准 
            "cppStandard": "c++17", // C++ 标准
            "intelliSenseMode": "windows-msvc-x64" // 智能感知的模式
        }
    ],
    "version": 4
}

tasks.json

{
    
    
    "tasks": [
        {
    
    
            "label": "MSVC编译",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                // 编译器地址
                "D:\\C\\VS2022\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat && cl.exe",
                "main.cpp",
                "/Zi",
                "/Od",
                "/EHsc",
                // 中间文件生成目录
                "/Fo${workspaceFolder}\\build\\${fileBasenameNoExtension}.obj", 
                // 目标文件生成目录
                "/Fe${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe", 
            ],
            "options": {
    
    
                "cwd": "${workspaceFolder}" // 作为当前打开目录
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": "build",
            "detail": "Task generated by Debugger."
        },
    ],
    "version": "2.0.0"
}

launch.json

{
    
    
    "version": "0.2.0",
    "configurations": [
        {
    
    
            "name": "C/C++: gcc.exe 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\A\\MinGW64\\bin\\gdb.exe", //此处为你的gdb.exe路径
            "setupCommands": [
                {
    
    
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
    
    
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "MSVC编译"
        }
    ]
}

2. Configuración de la tarea Eliminar archivo

{
    
    
 "label": "删除中间文件",
 "type": "shell",
 "command": "cmd.exe",
 "args": [
     "/c",
     "del",
     "${workspaceFolder}\\build\\*.obj",  	// 删除build文件夹下的所有.obj文件
     "${workspaceFolder}\\build\\*.ilk",	// 删除build文件夹下的所有.ilk文件
     "${workspaceFolder}\\*.pdb",      		// 删除工作空间下的所有.pdb 文件
 ],
 "group": "build",
},

3. Compilar, eliminar y ejecutar

Los siguientes tasks.jsonarchivos de configuración se ejecutarán secuencialmente: compilar archivos de origen, eliminar archivos intermedios, ejecutar operaciones de archivos ejecutables.

{
    
    
    "tasks": [
        // MSVC编译
        {
    
    
            "label": "MSVC编译",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                "D:\\C\\VS2022\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat && cl.exe",
                "main.cpp",
                "/Zi",
                "/Od",
                "/EHsc",
                // 中间文件生成目录
                "/Fo${workspaceFolder}\\build\\${fileBasenameNoExtension}.obj", 
                 // 目标文件生成目录
                "/Fe${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe",
            ],
            "options": {
    
    
                "cwd": "${workspaceFolder}" // 作为当前打开目录
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": "build",
            "detail": "Task generated by Debugger."
        },
        // 删除中间文件
        {
    
    
            "label": "删除中间文件",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                "del",
                "${workspaceFolder}\\build\\*.obj",
                "${workspaceFolder}\\build\\*.ilk",
                "${workspaceFolder}\\*.pdb",
            ],
            "group": "build",
            "dependsOn": [
                "MSVC编译",
            ]
        },
        // RUN
        {
    
    
            "label": "RUN",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c echo. && echo. && echo. && echo. && echo. && echo ================================================================================ && .\\build\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
    
    
                "cwd": "${workspaceFolder}"
            }, // 作为当前打开目录
            "group": {
    
    
                "kind": "build",
                "isDefault": true
            },
            "dependsOn": [
                "删除中间文件",
            ]
        },
    ],
    "version": "2.0.0"
}

5. Resolución de problemas

1. Resuelva el problema de ejecutar flashback de consola de código

Método 1
Modifique el valor del parámetro launch.jsonen el archivo paraexternalConsolefalse

"externalConsole":false

Método 2
Agregar al final del programa principal: system("pause");
Método 3
Agregar al final del programa principal:getchar();

2. Solución de código distorsionado

Método 1
Agregue el archivo de encabezado <windows.h> y llame a la función API SetConsoleOutputCP(65001)
inserte la descripción de la imagen aquí
Método 2
Cambie el formato de codificación de VScode a GBK, o abra el archivo de código fuente con el Bloc de notas y guárdelo como formato de codificación ANSI.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Método 3
Modifique el archivo de configuración setting.json de VScode y unifíquelo en un formato de codificación.
inserte la descripción de la imagen aquí
Método 4
El conjunto de caracteres predeterminado de Windows (chino) es Windows-936 (GBK), y el compilador GCC lo analiza de acuerdo con UTF-8 al compilar de manera predeterminada. Cuando no se especifica el conjunto de caracteres, se tratará como UTF- 8, por lo que causa caracteres ilegibles. Por lo tanto, se puede solucionar agregando los siguientes parámetros al compilar con GCC.

-fexec-charset=gbk
-finput-charset=gbk

Supongo que te gusta

Origin blog.csdn.net/hfy1237/article/details/130781012
Recomendado
Clasificación