利用Linux下自动生成makefile的工具: automake, autoconf 生成makefile的一般过程
1. 创建工程目录和各个目录下的makefile.am。工程的名字一般和最终生成应用程序的名字相同。
简单的介绍如何使用automake自动生成Makefile文件
- wzb@embedded ~]$ mkdir workspace
- [wzb@embedded ~]$ cd workspace/
- [wzb@embedded workspace]$ ls
- [wzb@embedded workspace]$ mkdir testAutoMake
- [wzb@embedded workspace]$ ls
- testAutoMake
- [wzb@embedded workspace]$ cd testAutoMake/
- [wzb@embedded testAutoMake]$ ls
- [wzb@embedded testAutoMake]$ mkdir src
- [wzb@embedded testAutoMake]$ ls
- src
- [wzb@embedded testAutoMake]$ pwd
- /home/wzb/workspace/testAutoMake
- [wzb@embedded testAutoMake]$ ls
- src
- [wzb@embedded testAutoMake]$ vi makefile.am
- [wzb@embedded testAutoMake]$ cd src
- [wzb@embedded src]$ ls
- [wzb@embedded src]$ vi main.c
- [wzb@embedded src]$ ls
- main.c
- [wzb@embedded src]$ vi main.c
- [wzb@embedded src]$ clear
- [wzb@embedded src]$ ls
- main.c
- [wzb@embedded src]$ vi makefile.am
- [wzb@embedded src]$ clear
- [wzb@embedded src]$ ls
- main.c makefile.am
- [wzb@embedded src]$ cd ..
- [wzb@embedded testAutoMake]$ ls
- makefile.am src
- [wzb@embedded testAutoMake]$ pwd
- /home/wzb/workspace/testAutoMake
- [wzb@embedded testAutoMake]$ ls -R
- .:
- makefile.am src
- ./src:
- main.c makefile.am
- [wzb@embedded testAutoMake]$
- [wzb@embedded testAutoMake]$ pwd
- /home/wzb/workspace/testAutoMake
- [wzb@embedded testAutoMake]$ ls
- makefile.am src
- [wzb@embedded testAutoMake]$ cat makefile.am
- SUBDIRS=src
- [wzb@embedded testAutoMake]$ vi makefile.am
- [wzb@embedded testAutoMake]$ cd src
- [wzb@embedded src]$ ls
- main.c makefile.am
- [wzb@embedded src]$ cat main.c
- #include <stdio.h>
- #include <stdarg.h>
- int accumulate(int nr, ...);
- int main(int argc, char *argv[]) {
- int n = 5;
- int result = accumulate(5, 5, 4, 3, 2, 1);
- printf("%d,\n", result);
- printf("test.......makefile ........ok\n");
- return 0;
- }
- int accumulate(int nr, ...) {
- int i = 0;
- int result = 0;
- va_list arg ;
- va_start(arg, nr);
- for(i=0; i<nr; i++) {
- result += va_arg(arg, int);
- }
- va_end(arg);
- return result;
- }
- [wzb@embedded src]$ pwd
- /home/wzb/workspace/testAutoMake/src
- [wzb@embedded src]$ cat makefile.am
- bin_PROGRAMS=testAutoMake
- testAutoMake_SOURCES=main.c
- [wzb@embedded src]$
首先在工程目录中,通过执行autoscan命令,生成autoconf的模板文件configure.scan 文件,将其改名为configure.in。
需要两处修改:
(1). 将configure.in文件中的语句:AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)中的
FULL-PACKAGE-NAME: 替换为你指派的开发工程包的名字:如本工程的:test_AutoMake;
VERSION: 开发的版本号,一般格式:主版本号.从版本号。 如 0.1;
BUG-REPORT-ADDRESS: 提交bug的邮件地址: 如[email protected]。
(2). 还要添加一句: AM_INIT_AUTOMAKE(testAutoMake, 0.1) 即AM_INIT_AUTOMAKE(package_name, version);
用来初始化automake。