使用automake自动生成makefile(上)

利用Linux下自动生成makefile的工具: automake, autoconf 生成makefile的一般过程



1.  创建工程目录和各个目录下的makefile.am。工程的名字一般和最终生成应用程序的名字相同。

简单的介绍如何使用automake自动生成Makefile文件

  1. wzb@embedded ~]$ mkdir workspace  
  2. [wzb@embedded ~]$ cd workspace/  
  3. [wzb@embedded workspace]$ ls  
  4. [wzb@embedded workspace]$ mkdir testAutoMake  
  5. [wzb@embedded workspace]$ ls  
  6. testAutoMake  
  7. [wzb@embedded workspace]$ cd testAutoMake/  
  8. [wzb@embedded testAutoMake]$ ls  
  9. [wzb@embedded testAutoMake]$ mkdir src  
  10. [wzb@embedded testAutoMake]$ ls  
  11. src  
  12. [wzb@embedded testAutoMake]$ pwd  
  13. /home/wzb/workspace/testAutoMake  
  14. [wzb@embedded testAutoMake]$ ls  
  15. src  
  16. [wzb@embedded testAutoMake]$ vi makefile.am  
  17. [wzb@embedded testAutoMake]$ cd src  
  18. [wzb@embedded src]$ ls  
  19. [wzb@embedded src]$ vi main.c  
  20. [wzb@embedded src]$ ls  
  21. main.c  
  22. [wzb@embedded src]$ vi main.c  
  23. [wzb@embedded src]$ clear  
  24. [wzb@embedded src]$ ls  
  25. main.c  
  26. [wzb@embedded src]$ vi makefile.am  
  27. [wzb@embedded src]$ clear  
  28. [wzb@embedded src]$ ls  
  29. main.c  makefile.am  
  30. [wzb@embedded src]$ cd ..  
  31. [wzb@embedded testAutoMake]$ ls  
  32. makefile.am  src  
  33. [wzb@embedded testAutoMake]$ pwd  
  34. /home/wzb/workspace/testAutoMake  
  35. [wzb@embedded testAutoMake]$ ls -R  
  36. .:  
  37. makefile.am  src  
  38.   
  39. ./src:  
  40. main.c  makefile.am  
  41. [wzb@embedded testAutoMake]$  
  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. makefile.am  src  
  5. [wzb@embedded testAutoMake]$ cat makefile.am  
  6. SUBDIRS=src  
  7. [wzb@embedded testAutoMake]$ vi makefile.am  
  8. [wzb@embedded testAutoMake]$ cd src  
  9. [wzb@embedded src]$ ls  
  10. main.c  makefile.am  
  11. [wzb@embedded src]$ cat main.c  
  12. #include <stdio.h>  
  13. #include <stdarg.h>  
  14.   
  15. int accumulate(int nr, ...);  
  16.   
  17. int main(int argc, char *argv[]) {  
  18.         int n = 5;  
  19.   
  20.         int result = accumulate(5, 5, 4, 3, 2, 1);  
  21.         printf("%d,\n", result);  
  22.   
  23.   
  24.         printf("test.......makefile ........ok\n");  
  25.   
  26.         return 0;  
  27. }  
  28.   
  29.   
  30. int accumulate(int nr, ...) {  
  31.         int i = 0;  
  32.         int result = 0;  
  33.   
  34.         va_list arg ;  
  35.   
  36.         va_start(arg, nr);  
  37.         for(i=0; i<nr; i++) {  
  38.                 result += va_arg(arg, int);  
  39.         }  
  40.         va_end(arg);  
  41.   
  42.         return result;  
  43.   
  44.   
  45. }  
  46. [wzb@embedded src]$ pwd  
  47. /home/wzb/workspace/testAutoMake/src  
  48. [wzb@embedded src]$ cat makefile.am  
  49. bin_PROGRAMS=testAutoMake  
  50. testAutoMake_SOURCES=main.c  
  51. [wzb@embedded src]$  


2.通过命令autoscan,创建autoconf的模板,生成configure.in 文件。

首先在工程目录中,通过执行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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值