g ++输出的文件名前导空格?

时间:2019-02-06 06:52:25

标签: visual-studio-code g++

我正在通过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

1 个答案:

答案 0 :(得分:1)

通常有两种方法可以将参数传递给命令行选项。第一个是单个值:

ingredients_text

第二个是两个值:

<command> -ohelloworld.exe

解析器理解两者,并且它们具有相同的结果。不幸的是,在您的示例中,您没有传递两个值,而是传递了一个带有空格的 one 值,因为它们之间没有外壳可以在空格处将它们分开。因此,<command> -o helloworld.exe 看到的实际上是一个带有值gcc的单个参数,并且由于-o helloworld.exe后跟更多字符,因此-o接受它作为文件名,包括前导空格。因此,要解决此问题,请使用单个参数gcc或将其拆分为两个"ohelloworld.exe"