为 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 构建工具 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