Ниже - рабочий путь “с нуля”: установить нужные инструменты, подключить расширения в VS Code, собрать и запустить простой C-проект через Clang (компилятор, который обычно уже есть на macOS через Xcode Command Line Tools).

Что потребуется

  • Visual Studio Code для macOS
  • Clang (компилятор C на macOS)
  • Расширение C/C++ для VS Code от Microsoft
  • Терминал (zsh по умолчанию)

Установите Visual Studio Code и (при необходимости) команду code

  1. Скачайте VS Code с официального сайта и перетащите приложение в Applications.
  2. Чтобы запускать VS Code из терминала командой code:
  3. откройте VS Code
  4. откройте Command Palette: Cmd+Shift+P
  5. выполните команду Shell Command: Install 'code' command in PATH
  6. перезапустите терминал

После этого удобно делать code . в любой папке.

Проверьте Clang

Откройте Terminal и выполните:

clang --version

Если команда не найдена, установите инструменты командной строки Xcode:

xcode-select --install

Снова проверьте:

clang --version

Установите расширение C/C++ в VS Code

  1. Откройте VS Code
  2. Перейдите во вкладку Extensions
  3. Найдите C/C++ (обычно это расширение ms-vscode.cpptools)
  4. Установите

Создайте проект и базовые файлы

Сделайте рабочую папку, например projects, и папку для C-кода:

mkdir -p ~/projects/c
cd ~/projects/c
code .

Создайте файл main.c с простым кодом:

#include <stdio.h>

int main(void) {
    printf("Hello, C on macOS!\n");
    return 0;
}

Настройка сборки и запуска в VS Code (через tasks.json)

Пока отдельный проектный конфиг не сделан, VS Code попросит выбрать компилятор и создаст настройки автоматически, но для предсказуемости лучше понимать, что именно будет происходить.

Быстрый запуск

  1. Откройте main.c (он должен быть активным файлом)
  2. Нажмите Run (зелёная кнопка/Play) в правом верхнем углу
  3. Выберите сборку и отладку для активного файла (обычно варианты формата C/C++: clang ...)

При первом запуске в папке .vscode появится tasks.json - там будет команда компиляции.

Что обычно окажется внутри tasks.json

Суть такая: сборка выполняется командой clang и результат кладётся в файл рядом с исходником (или в папку проекта - зависит от шаблона).

Ориентир по логике (пример, точные пути могут отличаться):

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: clang build active file",
      "command": "/usr/bin/clang",
      "args": [
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "group": { "kind": "build", "isDefault": true },
      "problemMatcher": ["$gcc"]
    }
  ],
  "version": "2.0.0"
}

Запуск из терминала (быстрый способ проверки)

Чтобы убедиться, что компилятор живой и проект собирается, можно просто собрать вручную:

clang main.c -o main
./main

Если это работает - проблема почти всегда в настройках VS Code, а не в системе.

Debug: запуск отладчика (launch.json)

Когда вы запускаете Debug для main.c, расширение создаёт launch.json. Его смысл простой:

  • программа запускается из скомпилированного файла
  • сборка делается перед запуском (через preLaunchTask)
  • отладка идёт через lldb (это штатная связка на macOS)

Часто выглядит примерно так (как шаблон):

  • preLaunchTask должен ссылаться на задачу из tasks.json (label)
  • program должен указывать на скомпилированный бинарник
  • cwd задаёт рабочую директорию

Настройка IntelliSense (c_cpp_properties.json)

Чтобы подсказки по типам и “Go to Definition” работали нормально, расширение обычно само создаёт конфиг:

.vscode/c_cpp_properties.json

Обычно там важны:
- compilerPath (путь к компилятору)
- cStandard (стандарт C)
- intelliSenseMode (режим для macOS/архитектуры)

Пример структуры:

{
  "configurations": [
    {
      "name": "Mac",
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c11",
      "intelliSenseMode": "macos-clang-arm64",
      "includePath": ["${workspaceFolder}/**"]
    }
  ],
  "version": 4
}

Если у вас другая архитектура (например, Intel), режим может отличаться - VS Code обычно подхватывает сам, но если нет, поправьте.

Проверка, что всё настроено

В VS Code у вас должно быть:
- файл main.c
- в .vscode/ есть tasks.json (для сборки)
- при отладке появится launch.json
- есть c_cpp_properties.json (для подсказок)

Минимальный итог:
- Run собирает main.c
- в Debug Console или Terminal появляется вывод Hello, C on macOS!

Если “не находится compiler” или сборка ломается

Самые частые причины:
- Clang не установлен или не доступен из PATH (решение - xcode-select --install)
- VS Code использует неверный путь к компилятору (проверьте compilerPath в c_cpp_properties.json)
- preLaunchTask в launch.json не совпадает по label с задачей в tasks.json

Если сборка проходит в терминале (clang main.c -o main) - смотрите именно соответствие конфигов VS Code между tasks.json и launch.json.

Полезный “рабочий минимум” структуры проекта

Рекомендуемый формат для простых учебных проектов:

c/
  main.c
  .vscode/
    tasks.json
    launch.json
    c_cpp_properties.json

Так VS Code стабильно понимает, чем компилировать и как запускать.