IntelliSenseMode 包含错误:当编译器路径为“/usr/bin/g++”时,从“macos-gcc-x86”更改为“macos-clang-x86”

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

我目前在 macOS Ventura 13.6.5 上使用 Visual Studio Code。我创建了一个 C/C++ 项目并将 G++ 设置为我的编译器。我已经使用 Makefile 定义了构建设置,一切正常,这意味着我的项目现在可以正确编译。

但是,我在配置 Intellisense 工具来帮助我完成代码完成、错误检测和其他功能时遇到了问题。具体来说,我遇到了 C++ 标准标头的包含错误,如

<string>
<vector>
,如附图所示。

以下是我的

c_cpp_properties.json
文件的内容:

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/Cellar/gcc/13.2.0/include/c++/13/tr1",
                "/usr/local/Cellar/gcc/13.2.0/lib/gcc/current/gcc/x86_64-apple-darwin22/13/include/ssp",
                "/usr/local/Cellar/gcc/13.2.0/lib/gcc/current/gcc/x86_64-apple-darwin22/13/include-fixed",
                "${workspaceFolder}/src/Solution"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

正如您在我的

c_cpp_properties.json
上看到的,我尝试定义
compilerPath
变量来指向我正在使用的编译器,在本例中为
g++
。我已经确认编译器的路径是正确的。

我还尝试确保将

gcc
标题包含到
includePath
中。为了找到我的
gcc
标头所在的位置,我执行了以下命令:

gabriel@pandora ssp % sudo find /usr -name stdio.h 
Password:
/usr/local/Cellar/gcc/13.2.0/include/c++/13/tr1/stdio.h
/usr/local/Cellar/gcc/13.2.0/lib/gcc/current/gcc/x86_64-apple-darwin22/13/include/ssp/stdio.h
/usr/local/Cellar/gcc/13.2.0/lib/gcc/current/gcc/x86_64-apple-darwin22/13/include-fixed/stdio.h

但是,由于某种原因,IntelliSense 拒绝从

c_cpp_properties.json
获取我的设置,而是尝试重新使用
clang
设置。至少这是我在重新启动 Visual Studio 并查看输出面板上的以下消息后的理解:

这里有人知道如何解决这个问题吗?任何提示将不胜感激。

谢谢,

编辑:

我能够使用此处提供的链接解决标题问题。然而,这导致了另一个问题,即有效代码的后续构建错误。我怀疑 Intellisense 要么试图检查 C 代码,而我的程序是用 C++ 编写的,要么是其他我不知道完全错误的东西。

我将不胜感激任何提示或可能的解决方案。

谢谢,

c++ macos visual-studio-code g++ intellisense
1个回答
0
投票

我敢打赌 /usr/bin/g++ 指向 Apple Clang(运行

/usr/bin/g++ --version
),而你自制安装的 GCC 位于 /opt/ 或 /usr/local/cellar 或其他位置。换句话说,如果您想要自制 GCC,请实际指向它而不是 Apple Clang。所以在很大程度上我怀疑这是重复的 Mac clang 安装似乎覆盖了 GCC 安装

对于问题的 VS Code 特定方面,如果您在 c_cpp_properties.json 中正确指定

compilerPath
,则不需要在
includePath
中指定工具链的系统标头 - cpptools 应该能够查询它们(请参阅https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference)。

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