我在VS代码通过G建设我的第一个C ++程序++,但是当我指定与-o filename.exe
标志输出可执行文件的文件名,输出文件始终有一个前导空格(“文件名.exe”,而不仅仅是“文件名.exe “)。
我刚开始使用C ++和(因为它似乎是一个非常流行的“IDE”用于C ++的东西,但选择它)我从来没有使用VS代码之前,所以忍耐一下,如果这是愚蠢的。我与build-essential
(12.4ubuntu1)和VS代码(1.30.2)的最新版本上运行所有这一切在Kubuntu的18.04。
基于谷歌福(和一些试验/错误)的一点点,我把这个一起生成任务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
。
通常有两种方式传递给参数的命令行选项。第一种是作为一个单一的值:
<command> -ohelloworld.exe
第二个是作为两个值:
<command> -o helloworld.exe
分析器理解都和他们有同样的结果。不幸的是你的榜样,你不是传递了两个值,而是一个与它的空间,因为在这之间没有壳可以在空间分割。那么,什么gcc
看到字面上是价值-o helloworld.exe
一个参数,并且由于-o
其次是更多的字符,gcc
将其作为文件名,包括领先的空间。因此,要解决这个问题,要么使用单个参数"ohelloworld.exe"
或将其分成两个"-o", "helloworld.exe"
。