IDE

VS Code

УстанавливаСм Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ:

  • C/C++ β€” ms-vscode.cpptools

  • C/C++ Extension Pack β€” ms-vscode.cpptools-extension-pack

УстанавливаСм компилятор для C/C++ β€” MSVC, GCC ΠΈΠ»ΠΈ CLang β€” Π³Ρ€ΡƒΠ±ΠΎ говоря, Π² зависимости ΠΎΡ‚ ОБ (MSVC β€” Windows, GCC β€” Unix, CLang β€” MacOS; ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΡ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒΡΡ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ любой ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄ Π²Π°ΡˆΡƒ ОБ).

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ для Windows ΠΏΠΎ установкС MSVC ΠΈ пишСм ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: https://code.visualstudio.com/docs/cpp/config-msvc

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ code . Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ ΠΈΠ· консоли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° msvc (Developer Command Prompt for VS 2022), ΠΈΠ½Π°Ρ‡Π΅ VS Code Π½Π΅ смоТСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ cl.exe компилятор.

mkdir my_cpp_project
cd my_cpp_project
code .

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» ΠΈ пишСм ΠΊΠΎΠ΄:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
    
    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}

Π–ΠΌΠ΅ΠΌ run ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ cl.exe.

Run configuration: tasks.json

ПослС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запуска VS Code создаст Ρ„Π°ΠΉΠ» tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "C/C++: cl.exe build active file",
      "command": "cl.exe",
      "args": [
        "/Zi",
        "/EHsc",
        "/Fe:",
        "${fileDirname}\\${fileBasenameNoExtension}.exe",
        "${file}"
      ],
      "problemMatcher": ["$msCompile"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    }
  ]
}

Π’ Π½Π΅ΠΌ настройки сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Ρ„Π°ΠΉΠ»Π΅ https://code.visualstudio.com/docs/editor/variables-reference.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° (Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ bin/debug, obj/debug ΠΈ source):

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "My Debug",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/EHsc",
                "/nologo",
                "/Fe:",
                "${workspaceFolder}\\bin\\debug\\${fileBasenameNoExtension}.exe",
                "/Fd:",
                "${workspaceFolder}\\obj\\debug\\vc140.pdb",
                "/Fo:",
                "${workspaceFolder}\\obj\\debug\\${fileBasenameNoExtension}.obj",
                "${workspaceFolder}\\source\\*.cpp"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚"
        }
    ],
    "version": "2.0.0"
}

Debug configuration: launch.json

ΠœΡ‹ смогли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π΄Π΅Π±Π°Π³Π°: ΠΆΠΌΠ΅ΠΌ Π½Π° ΡˆΠ΅ΡΡ‚Π΅Ρ€Π΅Π½ΠΊΡƒ свСрху справа ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ€Π°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° запуск β€” создастся Ρ„Π°ΠΉΠ» launch.json:

{
    "configurations": [
        
        {
            "name": "C/C++: cl.exe сборка ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\bin\\debug\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "console": "externalTerminal",
            "preLaunchTask": "My Debug"
        }
    ],
    "version": "2.0.0"
}

C/C++ Configurations

Если Ρ…ΠΎΡ‚ΠΈΠΌ большС контроля Π½Π°Π΄ C/C++, создайтС ΠΊΠΎΠ½Ρ„ΠΈΠ³ c_cpp_properties.json. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ компилятора, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ стандарт C++ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это C++17). Π–ΠΌΠ΅ΠΌ Ctrl+Shift-P (command palette) ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ C/C++: Edit configurations (UI).

Run VS Code outside Developer Command Prompt

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ VS Code (code .) ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ VS 2022, ΠΌΠΎΠΆΠ½ΠΎ Π² tasks.json Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π΅ автоматичСскоС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅:

{
    "windows": {
        "options": {
            "shell": {
                "executable": "cmd.exe",
                "args": [
                    "/C",
                    // The path to VsDevCmd.bat depends on the version of Visual Studio you have installed.
                    "\"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools/VsDevCmd.bat\"",
                    "&&"
                ]
            }
        }
    },
    "tasks": [
        // ...
    ]
}

И добавляСм cl.exe в PATH.

+ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ https://qna.habr.com/q/475262

И я Π½Π΅ справился: Π»Π΅Π³Ρ‡Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ VS Code ΠΈΠ· Developer Command Prompt

Last updated