automake中Makefile.am学习

http://www.cnblogs.com/zmlctt/p/4161547.html http://blog.****.net/dengzhilong_cpp/article/details/7486791 创建一个 Makefile.am.这一步是创建Makefile很重要的一步,automake要用的脚本配置文件是Makefile.am,用户需要自己创建相应的文件。之后,automake工具转换成Makefile.in。 这个Makefile.am的内容如下:

------------------------------------------------ AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=main main_SOURCES=main.c ------------------------------------------------

其中的AUTOMAKE_OPTIONS为设置automake的选项。由于GNU(在第1章中已经有所介绍)对自己发布的软件有严格的规范,比如 必须附 带许可证声明文件COPYING等,否则automake执行时会报错。automake提供了三种软件等级:foreign、gnu和gnits,让用 户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件。

bin_PROGRAMS定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开。

main_SOURCES定义“main”这个执行程序所需要的原始文件。如果”main”这个程序是由多个原始文件所产生的,则必须把它所用到的 所有原 始文件都列出来,并用空格隔开。例如:若目标体“main”需要“main.c”、“sunq.c”、“main.h”三个依赖文件,则定义 main_SOURCES=main.c sunq.c main.h。要注意的是,如果要定义多个执行文件,则对每个执行程序都要定义相应的file_SOURCES。

lib_LTLIBRARIES = libaudiobox.la libaudiobox_la_SOURCES = audio_streamops.c \ audio_rpc.c \ audio_chn.c libaudiobox_la_CFLAGS = -I$(top_srcdir)/include \ -g -Wall -Werror\ $(LIBFR_CFLAGS) $(LIBEVENT_CFLAGS) \ $(LIBALSA_CFLAGS) libaudiobox_la_LDFLAGS = $(LIBFR_LIBS) $(LIBEVENT_LIBS) \ $(LIBALSA_LIBS) bin_PROGRAMS = audiobox #定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开 audiobox_CPPFLAGS = -I$(top_srcdir)/include \ -g -Wall -Werror\ $(LIBFR_CFLAGS) $(LIBEVENT_CFLAGS) \ $(LIBALSA_CFLAGS) audiobox_LDFLAGS = -pthread -lrt -lasound \ $(LIBFR_LIBS) $(LIBEVENT_LIBS) \ $(LIBALSA_LIBS) audiobox_SOURCES = \ audiobox.c \ audiobox_hal.c \ audiobox_listener.c \ audiobox_ctl.c \ audiobox_service.c \ audio_rpc.c \ audiobox_softvol.c #main_SOURCES定义“main”这个执行程序所需要的原始文件。如果”main”这个程序是由多个原始文件所产生的,则必须把它所用到的所有原 始文件都列出来,并用空格隔开。例如:若目标体“main”需要“main.c”、“sunq.c”、“main.h”三个依赖文件,则定义 main_SOURCES=main.c sunq.c main.h。要注意的是,如果要定义多个执行文件,则对每个执行程序都要定义相应的file_SOURCES。 AUTOMAKE_OPTIONS=foreign #automake提供了三种软件等级:foreign、gnu和gnits,让用 户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件。