为 cl.exe (Visual Studio Code) 指定命令行 C++ 版本

Posted

技术标签:

【中文标题】为 cl.exe (Visual Studio Code) 指定命令行 C++ 版本【英文标题】:Specify command-line C++ version for cl.exe (Visual Studio Code) 【发布时间】:2020-07-15 13:02:41 【问题描述】:

我正在 Visual Studio Code 中测试 C++17 fallthrough 属性。 IDE 已配置为使用 Microsoft Visual Studio cl.exe 编译器编译 C/C++ 代码。我在 DEBUG 模式下构建一个简单的.cpp 文件的任务定义(在tasks.json 中)是:


    "type": "shell",
    "label": "cl.exe: Build active file",
    "command": "cl.exe",
    "args": [
        "/Zi",
        "/EHsc",
        "/Fe:",
        "$file",
        "/link",
        "/OUT:$fileDirname\\$fileBasenameNoExtension.exe"
    ],
    "options": 
        "cwd": "$workspaceFolder"
    ,
    "problemMatcher": [
        "$msCompile"
    ]

这已经在几个程序上进行了测试并且运行良好。现在我使用新的[[fallthrough]]; 属性包含一个switch 语句,编译器生成:

warning C5051: attribute 'fallthrough' requires at least '/std:c++17'; ignored

"/std:c++17", 添加到 cl.exe 的“args”中没有任何改变(生成相同的编译器警告)。这是新版本:

"args": [
    "/Zi",
    "/EHsc",
    "/Fe:",
    "/std:c++17",
    "$file",
    "/link",
    "/OUT:$fileDirname\\$fileBasenameNoExtension.exe"
],

据我所知,根据Microsoft documentation 指定语言标准,我的语法是正确的。

我做错了什么?

【问题讨论】:

code.visualstudio.com/docs/cpp/config-msvc你可以查看这个链接 如果您想更好地控制 C/C++ 扩展,您可以创建一个 c_cpp_properties.json 文件,该文件将允许您更改编译器路径、包含路径、C++ 标准(默认为 C++17),等等。 啊,好提示!你是说c_cpp_properties.json中的"compilerArgs"参数吗? 例如你可以选择上面的链接。 嗯,已将"cppStandard": "c++17" 添加到\.vscode\c_cpp_properties.json 文件中,但仍然收到相同的requires c++17 ...ignored 警告。语法相当繁琐! 【参考方案1】:

我在搜索其他内容时发现了这个问题,但这里有一个解决方案:)。

您的问题是您提供参数的顺序。 /Fe: 期待文件路径紧随其后 - https://docs.microsoft.com/en-us/cpp/build/reference/fe-name-exe-file?view=msvc-160

这是一个示例 args 部分取自 VSCode documentation,但我添加了 /std:c++17 编译器标志

"args": [
    "/Zi",
    "/EHsc",
    "/std:c++17", // <= put your compiler flag here
    "/Fe:", // <= /Fe: followed by the path + filename
    "$fileDirname\\$fileBasenameNoExtension.exe",
    "$file"
]

希望对您有所帮助,祝您编码愉快!

【讨论】:

以上是关于为 cl.exe (Visual Studio Code) 指定命令行 C++ 版本的主要内容,如果未能解决你的问题,请参考以下文章

错误:命令 'C:\\Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x64\\cl.exe'

Visual Studio 2017 找不到 cl.exe

如何为 Visual Studio 构建工具 cl.exe 编写 makefile(nmake)

无法找到:“CL.exe”,Opencv与Visual Studio c ++ 2010快速程序错误

区分 cl.exe 生成的 32 位和 64 位 PE 对象文件(Visual Studio C++)

Python 错误:命令 '...\Microsoft Visual Studio 10.0\\VC\\BIN\\cl.exe' 失败,退出状态为 2