以一个例子介绍具体步骤:
测试环境:Win7+MinGW(linux更不用说肯定可以了)
1.新建主程序demo.c:
#include
int main(int argc, char * argv[]){
GtkWidget * window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect_swapped(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), G_OBJECT(window));
gtk_widget_show(window);
gtk_main();
return 0;
}
2.使用autoscan扫描源代码,生成configure.scan文件:
./autoscan
生成的configure.scan文件如下:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([demo.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
3.将configure.scan重命名为configure.ac,修改和添加必要的信息,修改后文件如下:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([demo], [1.0], [tsl0922@gmail.com])// 软件名称、版本号、作者邮箱
AM_INIT_AUTOMAKE(demo, 1.0) // Automake所必备的宏,必须添加
AC_CONFIG_SRCDIR([demo.c]) // 源文件名
AC_CONFIG_HEADERS([config.h]) // config文件,为autoheader准备
# Checks for programs.
AC_PROG_CC// 编译器,默认GCC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])// 指定输出文件名为Makefile
AC_OUTPUT
4.
(1)使用aclocal扫描configure.ac,生成aclocal.m4文件:aclocal
(2)使用autoconf工具将configure.ac中的宏展开,生成configure脚本:autoconf
(3)使用autoheader生成config.h.in文件:autoheader
(4)使用automake生成Makefile.in文件:automake --add-missing
合并为一个脚本:autogen.sh
aclocal
autoconf
autoheader
automake --add-missing
5.手工编写Makefile.am文件:
AUTOMAKE_OPTIONS = foreign
INCLUDES = `pkg-config --cflags gtk+-2.0` //包含gtk库
LIBS = `pkg-config --libs gtk+-2.0` //链接gtk库文件
bin_PROGRAMS = demo
demo_SOURCES = demo.c
6.执行autogen.sh,并运行configure生成Makefile:
./autogen.sh
./configure
7.生成最终程序文件:
make
最终生成的文件如下:
运行程序:
./demo
运行结果:
使用Automake生成的Makefile文件相当全面,支持的预设命令有:
1.编译:make
2.安装:make install
3.卸载:make uninstall
4.清理:make clean
附:简单说下windows下gtk+开发环境搭建:
下载MinGW:
我使用的是已经有的Mplayer WW的MinGW编译环境,也可以到官网去下载。我用的环境下载地址:
下载gtk+:
把gtk解压到一个路径如C:\gtk,并添加到环境变量中(我是直接把gtk解压到MinGW目录中覆盖相同文件)
打开MinGW命令窗口,执行pkg-config --cflags gtk+-2.0,看下有没有正确输出gtk库的包含路径,再执行下gtk-demo,看是不是可以运行,这是一个gtk的示例程序,可以拿来学习,有源码的。