Не могу скомпилировать C++ hello world с помощью clang на Mac Sequoia 15.0 и VS CodeC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не могу скомпилировать C++ hello world с помощью clang на Mac Sequoia 15.0 и VS Code

Сообщение Anonymous »

Я обновил XCode (версия 16.0) и убедился, что инструменты командной строки xcode (xcode-select версии 2409) обновлены.
Я установил код C/C++ VS Code расширение v.1.21.6
Мой путь компилятора установлен в /usr/bin/clang++
с помощью команды clang++ -- version Я вижу результат:
Apple clang version 16.0.0 (clang-1600.0.26.3)
Target: arm64-apple-darwin24.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Если я следую руководству «Hello World» по адресу https://code.visualstudio.com/docs/cpp/config-clang-mac, я вижу красную волнистую линию для первого включения с ошибка:
#include errors detected. Please update your includePath.

Я тщательно обыскал свою файловую систему и нашел множество каталогов с iostream, каждый из которых соответствует определенной версии MacOS.
Я пробовал добавить дополнительный includePath, который содержит iostream:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1

но когда я пытаюсь построить, я все равно получаю сообщение об ошибке:
fatal error: 'iostream' file not found

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

Расширение использует параметр compilerPath для определения пути к файлам заголовков стандартной библиотеки C++.

Когда я запускаю проект XCode C++, собираю и запускаю тот же привет- мировой код, он работает нормально. Я новичок в C++ и не знаю, как продолжить устранение неполадок и правильное указание расширения VS Code C/C++ на стандартную библиотеку.
Файл c_cpp_properties для справки:
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1"
],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang++",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}

Файл Tasks.json для справки:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ build active file",
"command": "/usr/bin/clang++",
"args": [
"-std=c++17",
"-pedantic-errors",
"-Wall",
"-Weffc++",
"-Wextra",
"-Wconversion",
"-Wsign-conversion",
"-ggdb",
"-Werror",
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}

Запуск clang++ непосредственно в командной строке дает следующий результат:
clang++ -std=c++17 -g /Users/todd/temp/vscode-c++/hello-world.cpp -o /Users/todd/temp/vscode-c++/hello-world

/Users/todd/temp/vscode-c++/hello-world.cpp:1:10: fatal error: 'iostream' file not found
1 | #include
| ^~~~~~~~~~
1 error generated.

Обновление:
Теперь я могу скомпилировать код hello world через командную строку с помощью аргумента isystem.
Обновление:
Теперь я могу скомпилировать код hello world через командную строку с аргументом isystem.
Обновление:
Теперь я могу скомпилировать код hello world через командную строку.
p>
clang++ -std=c++17 -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 hello-world.cpp -o h
ello-world


Подробнее здесь: https://stackoverflow.com/questions/789 ... nd-vs-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»