无法在 mac sequoia 15.0 和 VS Code 上使用 clang 编译 c++ hello world

问题描述 投票:0回答:1

我已经更新了 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
c++ xcode macos visual-studio-code clang++
1个回答
0
投票

安装 MacOS Sequoia 15.0 附带的命令行工具后,我遇到了同样的问题 我正在尝试使用 Clion,但发现文件丢失。

/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/bits/stdc++.h:33:10: 致命错误:找不到“cassert”文件 33 | #包括 | ^~~~~~~~~ 产生 1 个错误。

这是显示的错误消息。 这是一个错误的命令行工具更新吗?

© www.soinside.com 2019 - 2024. All rights reserved.