我对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
此代码应插入何处?它在命令窗口运行并生成一些输出,但这并没有解决我在代码中的MS visual studio中出现的错误。我提前为重复一个问题道歉,但我仍然无法理解应该运行这个pkg-config代码的位置,而其他回复对我来说并不清楚。
答案 0 :(得分:2)
pkg-config --cflags gtk+-3.0
行是一个shell命令,它在标准输出上生成您需要传递以使用所需函数的编译器标志。例如,
-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
--libs
生成C编译器标志,--cflags
生成链接器标志。如果您正在使用makefile构建,那么您只想向生成.o
文件的配方提供--libs
,并且仅向生成的配方提供if
最终的可执行文件要使用单个命令将单个C文件直接编译为可执行文件,请同时提供。