Configuración de VS Code con MSYS2 y CPH para Programación Competitiva en Windows 11

1. **Instalación de MSYS2**
Descarga el instalador desde el sitio oficial (la ubicación predeterminada es C:\msys64). MSYS2 es una distribución para Windows que gestiona MinGW-w64/GCC/Clang.

2. **Instalación de la cadena de herramientas UCRT64 de 64 bits (recomendado)**
Abre la terminal **MSYS2 UCRT64** desde el menú de inicio y ejecuta:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

Presiona Enter para continuar (instalará todos los 13 paquetes por defecto).

Esta es la recomendación oficial de la documentación de VS Code; esta cadena incluye mingw-w64-ucrt-x86_64-gcc/g++/gdb/....

Nota: MSYS2 ofrece múltiples entornos (ucrt64/clang64, etc.). Para competencias, se recomienda **UCRT64 + GCC** por su estabilidad y buena compatibilidad. También puedes usar UCRT64 + Clang con:

pacman -S mingw-w64-ucrt-x86_64-clang

3. **Añadir el compilador al PATH**
Agrega C:\msys64\ucrt64\bin a la variable PATH de tu usuario.

4. **Verificación** (en una terminal nueva):

g++ --version
gdb --version

Si ves los números de versión, todo está correcto. MSYS2 proporciona una versión reciente de GCC que soporta -std=c++23/gnu++23.

Instalación de Extensiones de VS Code

  • C/C++ por Microsoft (IntelliSense/depuración) → Busca "C++" en el mercado de extensiones de VS Code.
  • CPH – Competitive Programming Helper (pruebas de casos/evaluación automática/conexión con sitios de competición) → Busca "competitive programming helper".
  • Competitive Companion (extensión de navegador para enviar problemas y ejemplos desde Codeforces/AtCoder a VS Code/CPH) → Después de instalar, haz clic en el "+" verde en el enunciado del problema.

Atajo de CPH: Ctrl + Alt + B ejecuta la evaluación de casos de prueba para el problema actual.

Configuración de VS Code para C++23 y MSYS2

Este paso solo afecta a las sugerencias inteligentes/navegación/depuración, no a la lógica de compilación y ejecución de CPH.

1. En VS Code: Ctrl+Shift+P → C/C++: Edit Configurations (UI), configura:

  • Ruta del compilador: C:\msys64\ucrt64\bin\g++.exe (o clang++.exe)
  • Estándar C++: c++23

Se generará un archivo .vscode/c_cpp_properties.json similar a:

{
  "configurations": [
    {
      "name": "MSYS2 UCRT64",
      "compilerPath": "C:/msys64/ucrt64/bin/g++.exe",
      "intelliSenseMode": "windows-gcc-x64",
      "cppStandard": "c++23",
      "includePath": ["${workspaceFolder}/**"]
    }
  ],
  "version": 4
}

Si usas Clang, cambia intelliSenseMode a windows-clang-x64.

2. **Opcional**: Configurar **MSYS2 UCRT64** como terminal integrado

{
  "terminal.integrated.profiels.windows": {
    "MSYS2 UCRT": {
      "path": "cmd.exe",
      "args": ["/c", "C:\\msys64\\msys2_shell.cmd -defterm -here -no-start -ucrt64"]
    }
  }
}

Configuración de CPH para usar compilador C++23 de MSYS2

CPH tiene capacidad para compilar y ejecutar casos de prueba con un solo clic. Debemos configurarlo para use el compilador g++/clang++ de MSYS2 y añadir parámetros como -std=gnu++23.

1. Abre **Configuración** (Ctrl+,), busca **"cph"**.
Encuentra **"Cph > Language > Cpp > Command"** y cambia a la ruta absoluta de tu compilador:

C:\msys64\ucrt64\bin\g++.exe

2. En la configuración de C++ de CPH, añade estos parámetros de compilación:

-std=gnu++23 -O2 -pipe -Wall -Wextra -Wshadow

3. **Uso**:

  • Usa Competitive Companion en el navegador para enviar problemas a VS Code
  • En VS Code, CPH generará archivos y casos de prueba
  • Presiona Ctrl+Alt+B para compilar y probar con los casos

Configuración alternativa de compilación/depuración

Para compilar y depurar directamente sin pasar por CPH, crea estos archivos:

.vscode/tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Compilar con g++ (C++23, O2)",
      "type": "shell",
      "command": "C:/msys64/ucrt64/bin/g++.exe",
      "args": [
        "-std=gnu++23", "-O2", "-pipe", "-Wall", "-Wextra", "-Wshadow",
        "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe"
      ],
      "group": { "kind": "build", "isDefault": true },
      "problemMatcher": ["$gcc"]
    }
  ]
}

.vscode/launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Depurar archivo actual (GDB)",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
      "cwd": "${fileDirname}",
      "stopAtEntry": false,
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "C:/msys64/ucrt64/bin/gdb.exe",
      "preLaunchTask": "Compilar con g++ (C++23, O2)"
    }
  ]
}

Prueba Rápida

  1. Crea un archivo solucion.cpp con un programa simple que lea varias líneas y las muestre
  2. En el panel de CPH, añade dos casos de prueba o importa desde el problema usando Competitive Companion
  3. Presiona Ctrl+Alt+B y verifica que la compilación y evaluación funcionen correctamente

Problemas Comunes y Soluciones

  • Error: g++ no encontrado: Verifica que C:\msys64\ucrt64\bin esté en PATH o usa la ruta completa en la configuración de CPH
  • ¿Qué entorno MSYS2 usar?: Para competencias, prioriza UCRT64 por su mayor modernidad y compatibilidad
  • ¿Usar Clang?: Puedes instalar Clang con mingw-w64-ucrt-x86_64-clang y cambiar el comando en CPH a clang++.exe
  • Estándares y opciones: -std=c++23 o -std=gnu++23 son válidos; gnu++23 permite extensiones GNU comunes en competencias
  • Importación automática de problemas: Instala la extensión Competitive Companion en tu navegador y haz clic en el "+" verde en las páginas de problemsa

Etiquetas: MSYS2 VS Code CPH C++23 Windows 11

Publicado el 6-11 21:59