如何自动生成Makefile

 如何自动生成Makefile

如果只是一个很小的程序,没有几个文件,那么,我们手工书写Makefile还是可以忍受的,如果是一个超大型的工程,谁能忍受的了,光一个Makefile文件就足以是Writer头疼了,但也没有人说一定要手工书写makefile文件。linux中提供了自动生成Makefile的工具,而且通过,这些工具生成的makefile还很符合GNU的习惯的。而且功能也很齐全。

自动生成makefile需要些工具来支持:autoscan,aclocal,autoconf,automake如果需要生成动态库还需要libtool。

举例子来说,假如我有test.c,p1.c,p2.c,myheader.h这几个文件,而且test.c需要调用在myheader.h中声明过的p1,p2函数,他们分别有p1.c,p2.c来实现。

首先,进入上面几个文件的目录,然后执行autoscan,autoscan用来扫描源代码目录并生成cinfigure.scan文件,和一个日志文件,但对我们来说有用的是前者:
    $autoscan
之后就会生成autoscan.log  configure.scan这两个文件,为了简单,我将所有的注释(以#开头)都删除了,打开configure.scan:
AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([p1.c])
AC_CONFIG_HEADER([config.h])

AC_PROG_CC

AC_OUTPUT
然后修改该文件,为后来使用作准备:
AC_INIT(test.c)
AM_INIT_AUTOMAKE(test, 1.0)

AC_PROG_CC

AC_OUTPUT(Makefile)
后面在解释为什么要这么修改。做完上面的工作之后,我们要将configure.scan改名为configure.in让aclocal使用,他是一个perl脚本程序,他根据configure.in文件的内容生成aclocal.m4文件
    $aclocal
然后就是生成configure脚本文件,
    $autoconf
这样ls后就会有一个configure的可执行的文件。当然,工作到这还没有结束,我们还要写一个Makefile.am文件,用来生成Makefile.in文件。
AUTOMAKE_OPTIONS= foreign
bin_PROGRAMS= test
test_SOURCES= test.c p1.c p2.c myheader.h
这样就生成一个Makefile.in的文件,此时运行一下configure脚本就会得到Makefile,打开之后会发现,太丰富了!make一下可执行的test被编译好了。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值