我已经更新了 XCode(v.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
如果我按照 https://code.visualstudio.com/docs/cpp/config-clang-mac 上的 hello world 教程进行操作,我会看到第一个包含错误的红色曲线:
#include errors detected. Please update your includePath.
我在我的文件系统中进行了广泛的搜索,并且喜欢许多具有 iostream 的目录,每个目录都特定于一个 Macos 版本。
我尝试添加一个包含 iostream 的额外 includePath:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1
但是当我尝试构建时,我仍然收到错误:
fatal error: 'iostream' file not found
文档听起来好像如果我有正确的编译器路径,那么它应该可以工作:
扩展使用compilerPath设置来推断C++标准库头文件的路径。
当我启动 XCode C++ 项目并构建并运行相同的 hello-world 代码时,它工作正常。我是 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 <iostream>
| ^~~~~~~~~~
1 error generated.
更新: 我现在可以通过命令行使用
isystem
参数来编译 hello world 代码。
clang++ -std=c++17 -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1 hello-world.cpp -o h
ello-world
安装 MacOS Sequoia 15.0 附带的命令行工具后,我遇到了同样的问题 我正在尝试使用 Clion,但发现文件丢失。
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/bits/stdc++.h:33:10: 致命错误:找不到“cassert”文件 33 | #包括 | ^~~~~~~~~ 产生 1 个错误。
这是显示的错误消息。 这是一个错误的命令行工具更新吗?