macOS 上使用 cpptools 1.71.1+ 的 VS Code:尝试用 C++ 编译代码时,“-std=gnu++14”出现在所有标志之前。怎么删除呢?

2023-11-30

我是一个初学者,在 macOS 上使用 VSCode。 尝试使用方括号进行迭代,这需要 C++17:

for (auto [document_id, relevance] : documents) {
            cout << "{ document_id = "s << document_id << ", relevance = "s << relevance << " }"s
                 << endl;
        }

当尝试终端 - >运行构建任务时,-std=gnu++14标志出现在所有其他标志之前,即使-std=gnu++17在tasks.json中指定

这是我的tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: clang++",
            "command": "/usr/bin/clang++",
            "args": [
                "-std=gnu++17",
                "-stdlib=libc++",
                "-fcolor-diagnostics",
                "-fansi-escape-codes",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "/usr/bin/clang++"
        }
    ]
}

这是输出:

 *  Executing task: C/C++: clang++ 

Starting build...
/usr/bin/clang++ -std=gnu++14 -std=gnu++17 -stdlib=libc++ -fcolor-diagnostics -fansi-escape-codes -g /Users/user/Documents/С++/000test/main.cpp -o /Users/user/Documents/С++/000test/main

Build finished successfully.
 *  Terminal will be reused by tasks, press any key to close it. 

可能是什么问题呢?

我也尝试在C/C++扩展中将C++版本更改为17,但没有成功。

当与"-std=gnu++17", "-stdlib=libc++"在任务 json 中没有出现警告,但第二个 -std 标志是否会覆盖第一个?

我也发现了这个topic,但我什至在 vscode 中没有 CMake 扩展。


看起来这是硬编码到 C++ 扩展中的:

https://github.com/microsoft/vscode-cpptools/blob/dec50598bc4d169b38292d2f4ff26a216d3c6342/Extension/src/LanguageServer/cppBuildTaskProvider.ts#L370

insertStd在 Macos 上 clang 设置为 true。

我会向 Microsoft 提出错误,但同时不要直接使用任务构建,使用 cmake 或其他构建系统,您将避免此问题。

这是最近添加的:https://github.com/microsoft/vscode-cpptools/pull/11300

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

macOS 上使用 cpptools 1.71.1+ 的 VS Code:尝试用 C++ 编译代码时,“-std=gnu++14”出现在所有标志之前。怎么删除呢? 的相关文章

随机推荐