如何为本地窗口(而不是X窗口)编译gtk +应用程序?

我设法使用cygwin编译gtk +应用程序,但不幸的是,这种方法需要应用程序需要运行x个窗口才能启动。

我怎样才能编译我的gtk +应用程序在Windows上本地运行。

我已经看到有关使用-mno-cygwin标志gcc各种post,但似乎已被弃用?

我也看到了这些post在stackoverflow,但不清楚,如果他们试图编译为X,或本机的Windows:

  • 在Windows下安装gtk和编译使用gcc?
  • 在Windows上编译GTK +应用程序?

应用程序需要使用MinGW而不是Cygwin进行编译。

我遵循的步骤的完整列表:

1)下载MinGW

2)安装MinGW到一个没有空格的文件夹,例如c:\ MinGW。

3)下载gtk +。 即使我的机器是64位,我去了32位下载的GTK +,因为64位下载页面的兼容性警告。 GTK + Win32下载在这里 。 我去了所有的在一个版本。

4)将gtk +提取到不含空格的文件夹,例如c:\ gtk

5)如果您还没有应用程序,可以使用gtk + hello world源代码。 保存到一个文件夹,例如c:\ myapp \

6)打开一个Windows命令提示符,然后在步骤5中转到该文件夹

cd c:\myapp

7)在命令窗口中,将MinGW文件夹添加到Windows PATH,例如

c:\myapp> set PATH=c:\gtk\bin;%PATH%

8)在命令窗口中,将您的gtk +文件夹添加到Windows PATH,例如

c:\myapp> set PATH=c:\gtk\bin;%PATH%

9)创建一个脚本来编译你的应用程序,例如

 C:\myapp> C:\MinGW\msys\1.0\bin\bash.exe -c "echo gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` > compile.bat" 

请注意,我必须提供bash.exe的完整路径。 出于某种原因,将c:\MinGW\msys\1.0\bin到PATH中,只是使用bash.exe并不适用于我。

10)用compile.bat编译你的应用程序,例如

c:\myapp> compile.bat

12)执行你的应用程序,例如

c:\myapp> helloworld.exe

截图


编辑

对于第9步,我们只是创建一个gcc命令来编译gtk +,包含正确的include和库选项设置。

这是为我生成的compile.bat的内容:

 gcc -Wall -g helloworld.c -o helloworld -mms-bitfields -Ic:/DEV/gtk224/include/gtk-2.0 -Ic:/DEV/gtk224/lib/gtk-2.0/include -Ic:/DEV/gtk224/include/atk-1.0 -Ic:/DEV/gtk224/include/cairo -Ic:/DEV/gtk224/include/gdk-pixbuf-2.0 -Ic:/DEV/gtk224/include/pango-1.0 -Ic:/DEV/gtk224/include/glib-2.0 -Ic:/DEV/gtk224/lib/glib-2.0/include -Ic:/DEV/gtk224/include -Ic:/DEV/gtk224/include/freetype2 -Ic:/DEV/gtk224/include/libpng14 -Lc:/DEV/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl 

其中, pkg-config --cflags gtk+-2.0创建的包含选项:

 -mms-bitfields -Ic:/DEV/gtk224/include/gtk-2.0 -Ic:/DEV/gtk224/lib/gtk-2.0/include -Ic:/DEV/gtk224/include/atk-1.0 -Ic:/DEV/gtk224/include/cairo -Ic:/DEV/gtk224/include/gdk-pixbuf-2.0 -Ic:/DEV/gtk224/include/pango-1.0 -Ic:/DEV/gtk224/include/glib-2.0 -Ic:/DEV/gtk224/lib/glib-2.0/include -Ic:/DEV/gtk224/include -Ic:/DEV/gtk224/include/freetype2 -Ic:/DEV/gtk224/include/libpng14 

(注意我已经放在上面的换行符,以提高可读性在stackoverflow)

注意, pkg-config --cflags gtk+-2.0已经把我的gtk + include文件(c:/ DEV / gtk224 / include /)的完整路径。

而由pkg-config --libs gtk+-2.0生成的库选项pkg-config --libs gtk+-2.0

 -Lc:/DEV/gtk224/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl 

(注意我已经把上面的换行符,以提高可读性在stackoverflow)

注意, pkg-config --libs gtk+-2.0已经把我的gtk库文件夹(c:/ DEV / gtk224 / lib)的完整路径。

有关pkg-config更多信息,请参阅GTK +文档