用于 GTK 开发的 VS Code C/C++ 配置

问题描述

我正在尝试为 Linux Ubuntu 上的 VS Code 中的 C/C++ 编程设置一个友好的环境。多年来我一直在使用 Visual Studio 和 Code Blocks,但是 VS Code 设置太不清楚了,我几乎无法理解文档主题。目前我正在尝试编译一些“hello world”程序,所以应该不难。

假设我正在尝试构建和运行 GTK-3 hello world program。执行此操作的命令行说明是:

gcc hello_world.c `pkg-config --cflags --libs gtk+-3.0`

在 bash 中使用时效果很好。所以首先我创建了一个名为 c_cpp_properties.json 的配置 GTK-devel 来编译它。 json文件内容为:

{
    "configurations": [
        {
            "name": "GTK-devel","includePath": [
                "${workspaceFolder}/**"
            ],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++14","intelliSenseMode": "linux-gcc-x64","compilerArgs": [
                "`pkg-config --cflags --libs gtk+-3.0`"
            ]
        }
    ],"version": 4
}

这是第一个问题:VS Code 中的配置是什么?在 Visual Studio 或 Code::Blocks 中,类似的事情在直观上是清晰且难以理解的——只需设置您需要的一切,然后在编译前在某处(菜单、对话框等)选择它。我想在 VS Code 中它是不同的,docs 根本没有解释 - 它只是说可以创建一个配置,但没有提到如何使用它。而且没有可以选择它的地方(终端、任务等),甚至在菜单等的任何地方都看不到。

第二个问题涉及任务。因此,如果配置方法失败,我决定设置一个可以从主菜单清楚访问的任务。 tasks.json 文件具有以下内容

{
    "version": "2.0.0","tasks": [
        {
            "type": "cppbuild","label": "C/C++: gcc compilation","command": "/usr/bin/gcc `pkg-config --cflags --libs gtk+-3.0`","args": [
                "-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"
            ],"options": {
                "cwd": "${workspaceFolder}"
            },"problemmatcher": [
                "$gcc"
            ],"group": "build","detail": "kompilator: /usr/bin/gcc GTK3"
        }
    ]
}

当我从菜单 Terminal -> Run build task -> C/C++: gcc compilation 中选择时,就调用指令而言,一切似乎都很好,但缺少 libs 错误(包含并存在于系统中):

"/usr/bin/gcc `pkg-config --cflags --libs gtk+-3.0`" -g /home/user/Programming/hello_world/hello_world.c -o /home/user/Programming/hello_world/hello_world
/bin/sh: 1: /usr/bin/gcc -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/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -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/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0: not found

这里出现了第三个问题docs 再次没有真正解释什么是终端。它说它认为 $SHELL,但如果是这样,为什么编译器看不到这些库?

所以最后一个问题是:VS Code 是一个真正的 IDE 还是它只是围绕它的一种营销方式,它可以用于在一个地方做许多不同的事情,但实际上它更好为每种语言使用专用工具等。因为设置问题会成功地分散您对您真正应该做的事情的注意力?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)