我正在通过g ++在VS Code中构建我的第一个c ++程序,但是当我使用-o filename.exe
标志为输出可执行文件指定文件名时,输出文件总是有一个前导空格(“ filename.exe”而不只是“ filename.exe”)。
我刚刚开始使用c ++,而且我以前从未使用过VS Code(但之所以选择它是因为它似乎是c ++东西中非常流行的“ IDE”),所以如果这很愚蠢,请多多包涵。我正在Kubuntu 18.04上使用最新版本的build-essential
(12.4ubuntu1)和VS Code(1.30.2)运行所有这些程序。
基于一点点Google-fu(以及一些试验/错误),我将这个构建任务tasks.json
组合在一起:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g++",
"args": [
"${workspaceRoot}/helloworld.cpp", "-o helloworld.exe"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
当我运行它来构建我的helloworld.cpp
文件(正是您所期望的)时,它将输出一个名为' helloworld.exe'
的可执行文件,而不是helloworld.exe
。
答案 0 :(得分:1)
通常有两种方法可以将参数传递给命令行选项。第一个是单个值:
ingredients_text
第二个是两个值:
<command> -ohelloworld.exe
解析器理解两者,并且它们具有相同的结果。不幸的是,在您的示例中,您没有传递两个值,而是传递了一个带有空格的 one 值,因为它们之间没有外壳可以在空格处将它们分开。因此,<command> -o helloworld.exe
看到的实际上是一个带有值gcc
的单个参数,并且由于-o helloworld.exe
后跟更多字符,因此-o
接受它作为文件名,包括前导空格。因此,要解决此问题,请使用单个参数gcc
或将其拆分为两个"ohelloworld.exe"
。