如何为 GTK3 配置 VSCode 以进行智能感知/构建/调试和 g++

The*_*ser 8 c++ gtk3 visual-studio-code vscode-settings vscode-debugger

我正在使用

  • 加++
  • GTK3
  • VS代码

我如何使以下内容起作用:

  • gtk 的智能感知/代码完成
  • 在 VSCode 中构建
  • 使用 VSCode 进行调试

问题:

VSCode 没有找到包含 - 特别#include <gtk/gtk.h>是在源代码中是红色的。

The*_*ser 13

需要注意的重要一点是,您需要告诉 VSCode 包含路径和编译器标志才能正常工作。

  • 第一步:在VSCode中打开目标文件夹。
  • 现在你应该有一个新的隐藏文件夹.vscode。打开它。
  • 要应用的输出pkg-config --cflags gtk+-3.0pkg-config --libs gtk+-3.0各自的configs。

使智能感知/代码完成工作

  • 创建一个文件.vscode/c_cpp_properties.json
  • 添加以下内容。

    {
        "env": {
            "myDefaultIncludePath": [
                "${workspaceFolder}",
                "${workspaceFolder}/include"
            ],
            "myCompilerPath": "/usr/local/bin/g++"
        },
        "configurations": [
            {
                "name": "include paths",
                "intelliSenseMode": "g++-8",
                "includePath": [
    
                    "/usr/include/gtk-3.0",
                    "/usr/include/at-spi2-atk/2.0",
                    "/usr/include/at-spi-2.0",
                    "/usr/include/dbus-1.0",
                    "/usr/lib/x86_64-linux-gnu/dbus-1.0/include",
                    "/usr/include/gtk-3.0",
                    "/usr/include/gio-unix-2.0",
                    "/usr/include/cairo",
                    "/usr/include/libdrm",
                    "/usr/include/pango-1.0",
                    "/usr/include/harfbuzz",
                    "/usr/include/pango-1.0",
                    "/usr/include/fribidi",
                    "/usr/include/atk-1.0",
                    "/usr/include/cairo",
                    "/usr/include/pixman-1",
                    "/usr/include/freetype2",
                    "/usr/include/libpng16",
                    "/usr/include/gdk-pixbuf-2.0",
                    "/usr/include/libmount",
                    "/usr/include/blkid",
                    "/usr/include/uuid",
                    "/usr/include/glib-2.0",
                    "/usr/lib/x86_64-linux-gnu/glib-2.0/include"
    
                ],
                "compilerPath": "/usr/local/bin/g++",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "browse": {
                    "path": [
                        "${workspaceFolder}"
                    ],
                    "limitSymbolsToIncludedHeaders": true,
                    "databaseFilename": ""
                }
            }
        ],
        "version": 4
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 请注意,“includePath”的内容是pkg-config --cflags gtk+-3.0没有前面的-Is 和双引号和逗号的输出。您可能需要根据机器的输出调整值

使建筑工作

你想在里面创建一个.vscode/tasks.json包含以下内容的新任务:

    {
      "type": "shell",
      "label": "gcc debug build active file - with GTK",
      "command": "/usr/bin/gcc",
      "args": [          
          "-g",

                "-pthread",
                "-I/usr/include/gtk-3.0",
                "-I/usr/include/at-spi2-atk/2.0",
                "-I/usr/include/at-spi-2.0",
                "-I/usr/include/dbus-1.0",
                "-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include",
                "-I/usr/include/gtk-3.0",
                "-I/usr/include/gio-unix-2.0",
                "-I/usr/include/cairo",
                "-I/usr/include/libdrm",
                "-I/usr/include/pango-1.0",
                "-I/usr/include/harfbuzz",
                "-I/usr/include/pango-1.0",
                "-I/usr/include/fribidi",
                "-I/usr/include/atk-1.0",
                "-I/usr/include/cairo",
                "-I/usr/include/pixman-1",
                "-I/usr/include/freetype2",
                "-I/usr/include/libpng16",
                "-I/usr/include/gdk-pixbuf-2.0",
                "-I/usr/include/libmount",
                "-I/usr/include/blkid",
                "-I/usr/include/uuid",
                "-I/usr/include/glib-2.0",
                "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include",

          "${file}",

                "-lgtk-3",
                "-lgdk-3",
                "-lpangocairo-1.0",
                "-lpango-1.0",
                "-latk-1.0",
                "-lcairo-gobject",
                "-lcairo",
                "-lgdk_pixbuf-2.0",
                "-lgio-2.0",
                "-lgobject-2.0",
                "-lglib-2.0",

          "-o",
          "${fileDirname}/${fileBasenameNoExtension}"
      ],
      "options": {
          "cwd": "/usr/bin"
      },
      "problemMatcher": [
          "$gcc"
      ],
      "group": {
          "kind": "build",
          "isDefault": true
      }
    } 
Run Code Online (Sandbox Code Playgroud)
  • 注意 中另外两个缩进的部分args
  • 最上面的还是 的输出pkg-config --cflags gtk+-3.0。(不过这次用的是-Is。)
  • 底部是pkg-config --libs gtk+-3.0(引用和逗号)的输出
  • 您可能还需要根据机器上命令的实际输出调整这些值

使调试工作

您想在文件中创建一个新配置.vscode/launch.json。在我的设置中,vscode 一直使用错误的配置,所以我删除了其他配置。以下是该文件的完整内容,只有一种配置。

    {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [

          {
              "name": "debug with gdb (no build)",
              "type": "cppdbg",
              "request": "launch",
              "program": "${fileDirname}/${fileBasenameNoExtension}",
              "args": [],
              "stopAtEntry": false,
              "cwd": "${workspaceFolder}",
              "environment": [],
              "externalConsole": false,
              "MIMode": "gdb",
              "setupCommands": [
                  {
                      "description": "Enable pretty-printing for gdb",
                      "text": "-enable-pretty-printing",
                      "ignoreFailures": true
                  }
              ],
              "preLaunchTask": "",
              "miDebuggerPath": "/usr/bin/gdb"
          }
      ]
    }
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

6813 次

最近记录:

4 年,10 月 前