如何在 C 文件中包含 gtk/gtk.h
How to include gtk/gtk.h in a C file
我是 C 语言开发的新手,想使用 GTK 创建 GUI。我已经下载并安装了 gtk 3.6.4 包。我正在尝试编译一些示例代码,如下所示:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
我真的很难理解如何包含头文件。我已经看到几个讨论使用 pkg-config 命令的线程,例如:
pkg-config --cflags --libs gtk+-3.0
这段代码应该插入哪里?它 运行 在命令 window 上运行并生成一些输出,但这并不能解决我在 MS visual studio 代码中遇到的错误。我提前为重复一个问题道歉,但我仍然无法理解这个 pkg-config 代码应该在哪里 运行 并且我从其他回复中不清楚。
pkg-config
行是一个 shell 命令,它在标准输出上生成您需要传递的编译器标志以使用您想要的函数。例如,
pkg-config --cflags gtk+-3.0
为我生产
-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/mirclient -I/usr/include/mircommon -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
您想要做的是使用 shell 的一项功能,其中一个命令的输出被放入另一个命令的命令行。在 bash 中,这是通过 `...`
:
完成的
gcc -o program program.c `pkg-config --cflags --libs gtk+-3.0`
对于bash,另一种语法是$(...)
:
gcc -o program program.c $(pkg-config --cflags --libs gtk+-3.0)
对于 GNU make makefile,如果要使用 $(...)
,则需要使用 shell
函数:
gcc -o program program.c $(shell pkg-config --cflags --libs gtk+-3.0)
--cflags
生成 C 编译器标志,--libs
生成链接器标志。如果您使用 makefile 进行构建,您将只想向生成 .o
文件的配方提供 --cflags
,并且只向生成最终可执行文件的配方提供 --libs
。要使用单个命令将单个 C 文件直接编译为可执行文件,请提供两者。
我是 C 语言开发的新手,想使用 GTK 创建 GUI。我已经下载并安装了 gtk 3.6.4 包。我正在尝试编译一些示例代码,如下所示:
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
我真的很难理解如何包含头文件。我已经看到几个讨论使用 pkg-config 命令的线程,例如:
pkg-config --cflags --libs gtk+-3.0
这段代码应该插入哪里?它 运行 在命令 window 上运行并生成一些输出,但这并不能解决我在 MS visual studio 代码中遇到的错误。我提前为重复一个问题道歉,但我仍然无法理解这个 pkg-config 代码应该在哪里 运行 并且我从其他回复中不清楚。
pkg-config
行是一个 shell 命令,它在标准输出上生成您需要传递的编译器标志以使用您想要的函数。例如,
pkg-config --cflags gtk+-3.0
为我生产
-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/mirclient -I/usr/include/mircommon -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
您想要做的是使用 shell 的一项功能,其中一个命令的输出被放入另一个命令的命令行。在 bash 中,这是通过 `...`
:
gcc -o program program.c `pkg-config --cflags --libs gtk+-3.0`
对于bash,另一种语法是$(...)
:
gcc -o program program.c $(pkg-config --cflags --libs gtk+-3.0)
对于 GNU make makefile,如果要使用 $(...)
,则需要使用 shell
函数:
gcc -o program program.c $(shell pkg-config --cflags --libs gtk+-3.0)
--cflags
生成 C 编译器标志,--libs
生成链接器标志。如果您使用 makefile 进行构建,您将只想向生成 .o
文件的配方提供 --cflags
,并且只向生成最终可执行文件的配方提供 --libs
。要使用单个命令将单个 C 文件直接编译为可执行文件,请提供两者。