在VSCode和WSL和C ++中构建多重文件

时间:2019-11-28 12:46:33

标签: c++ visual-studio-code windows-subsystem-for-linux

我已经测试过通过WSL在vscode上对多个文件进行编码

code .

在好文件夹中。

我有三个文件。

这是我获得的错误消息,而代码是正确的:

  

g ++:错误:helloworld.cpp:没有这样的文件或目录

     

g ++:错误:file2.cpp:没有这样的文件或目录   g ++:错误:file3.cpp:没有这样的文件或目录

     

g ++:致命错误:没有输入文件

     

编译终止。

     

终端进程终止,退出代码为:1

     

终端将被任务重用,按任意键将其关闭。

这是我的task.json文件:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "helloworld.cpp","file2.cpp","file3.cpp",
                "-o",
                "executable.out"
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

请帮助您解决该问题,而使用此处提到的单个文件就可以了:

https://code.visualstudio.com/docs/cpp/config-wsl#_modifying-tasksjson

我还精确地说.cpp文件不在.vscode文件夹中,而是在项目的主文件夹中。 enter image description here 预先感谢

ps:我看到了有关该问题的多个线索,但这并不能解决我的问题。

1 个答案:

答案 0 :(得分:1)

带有tasks.json的原始示例具有参数:

            "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
            "options": {
                "cwd": "/usr/bin"
            },

这很好,因为${file}将包含实际文件的绝对路径,因此cwd的设置位置无关紧要。如果您有:

            "args": [
                "-g",
                "helloworld.cpp","file2.cpp","file3.cpp",
                "-o",
                "executable.out"
            ],
            "options": {
                "cwd": "/usr/bin"
            },

VSCode正在寻找文件/usr/bin/helloworld.cpp/usr/bin/file2.cpp/usr/bin/file3.cpp-这显然是错误的。

解决方案是将当前目录更改为当前工作空间文件夹:

"options": {
    "cwd": "${workspaceFolder}",
},

有关所有可能的变量,请咨询reference