【问题标题】:Visual Studio Code cannot finde g++ compiler on linuxVisual Studio Code 在 linux 上找不到 g++ 编译器
【发布时间】:2018-04-26 22:29:03
【问题描述】:

有谁知道为什么 vs-code 找不到 c++ 编译器。我已经使用 vc-code 几个月没有任何问题,但突然没有任何明确的原因它再也找不到编译器了!这里有人能弄清楚是什么原因造成的吗?

tasks.json

    {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command":"g++ $(pkg-config --cflags --libs opencv gl glew sdl2)",
            "args": ["-g", "${workspaceFolder}/*.cpp", "-lstdc++fs", "-pthread"],
             "group":{
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

c_cpp_properties.json

{
    "configurations": [

        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}",
                "/usr/include/c++/6.3.0",
                "/usr/include/c++/6",
                "/usr/include/x86_64-linux-gnu/c++/6",
                "/usr/include/c++/6/backward",
                "/usr/lib/gcc/x86_64-linux-gnu/6/include",
                "/usr/local/include",
                "/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed",
                "/usr/include/x86_64-linux-gnu",
                "/usr/include",
                "/usr/bin"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceFolder}",
                    "/usr/include/c++/6.3.0",
                    "/usr/include/c++/6",
                    "/usr/include/x86_64-linux-gnu/c++/6",
                    "/usr/include/c++/6/backward",
                    "/usr/lib/gcc/x86_64-linux-gnu/6/include",
                    "/usr/local/include",
                    "/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed",
                    "/usr/include/x86_64-linux-gnu",
                    "/usr/include",
                    "/usr/bin"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17"
        }
    ],
    "version": 3
}

输出

/bin/bash: g++ $(pkg-config --cflags --libs opencv gl glew sdl2): command not found

注意:我还是可以用g++在vs-code的集成终端编译文件,但是tasks.json不能识别!!!

【问题讨论】:

  • 看起来你在“命令”中的“g++”之后有一个额外的空格......我猜VS Code不会在那里去除空格。
  • 实际上,在我删除了多余的空间后,该特定示例的效果非常好,但现在当我为编译器提供更多选项时,我遇到了同样的问题。我已经编辑了帖子
  • ... 为什么要将参数放在command 而不是args
  • 我不认为这可能与这个问题有关,因为我已经这样使用它很长时间了,没有任何问题。一般来说,在编译过程中,所有这些部分都会被剪辑在一起。
  • 您可能还想配置和/或启用 g++。然后也包含它的路径“/usr/lib/g++/x86_64-linux-gnu/6/include”,.....

标签: linux visual-studio-code g++ vscode-settings vscode-tasks


【解决方案1】:

我不认为这可能与这个问题有关,因为我已经这样使用它很长时间了,没有任何问题。一般来说,在编译过程中,所有这些部分都会被剪辑在一起。

您更新了命令,因此您的陈述不再正确。也就是说,您添加了命令替换 $(...),它没有在 Visual Studio Code 中处理,并在一次命令中按原样传递给 bash。正确的解决方案如下:

"tasks": [
    {
        "label": "echo",
        "type": "process",
        "command":"/bin/bash",
        "args": [ "-c", "g++", "$(pkg-config --cflags --libs opencv gl glew sdl2)", "-g", "${workspaceFolder}/*.cpp", "-lstdc++fs", "-pthread"],
         "group":{
            "kind": "build",
            "isDefault": true
        }
    }
]

或者短一点

"tasks": [
    {
        "label": "echo",
        "type": "process",
        "command":"/bin/bash",
        "args": [ "-c", "g++ $(pkg-config --cflags --libs opencv gl glew sdl2) -g ${workspaceFolder}/*.cpp -lstdc++fs -pthread"],
         "group":{
            "kind": "build",
            "isDefault": true
        }
    }
]

【讨论】:

  • 实际上您上面显示的设置和以前一样运行良好,所以感谢您指出这一点!但我仍然无法弄清楚为什么我在我的问题中显示的设置突然变得不适用了!因为我一直以这种方式使用它一年多没有问题,但突然更新后任务无法识别 g++ 编译器!!!
猜你喜欢
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 2021-06-20
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多