使用autoconf对项目自动生成makefile

来源:互联网 发布:安卓chroot运行linux 编辑:程序博客网 时间:2024/06/05 01:15

一般情况下,我会手动编写Makefile文件,但是如果搞一个开源项目,那么手动写就显得很弱了,而且兼容性不知道怎么样。就查了下如何跟开源项目一样,使用./configure     make    make install 的标准方式安装软件

1:首先安装autoconf, ubuntu 使用sudo apt-get install autoconf

2:进入项目目录,使用autoscan命令扫描需要目录,生成configure.scan文件

3:编辑configure.scan文件,加入以下行,参数1是生成的名字,参数2是版本

AM_INIT_AUTOMAKE(proname, 1.0)

 把AC_OUTPUT改成AC_OUTPUT(Makefile),目的是说明最后生成的文件名是Makefile

4:把configure.scan重命名为configure.in 

5:执行aclocal命令生成.m4文件,这是一个宏处理文件,告诉编译器如何处理你的宏

6:执行autoconf命令,生成configure可执行脚本, 他会调用Makefile.in文件生成Makefile文件,

下面是如何生成Makefile.in文件

7:创建一个Makefile.am文件,这个文件里需要写基本的信息,比如项目有哪些源代码文件,命令行参数是什么,库文件路径之类的,毕竟没那么智能,下图是am文件编写的基本格式,跟makefile差不多

例如编写如下文件保存为Makefile.am

AUTOMAKE_OPTIONS=foreign #说明严谨度,一定要写

bin_PROGRAMS=proname #名字

proname_SOURCES=main.cpp #所有源文件,默认在当前目录

proname_CPPFLAGS=-DDEBUG #编译参数

proname_LDADD= #需要链接的文件

proname_LDFLAGS=-lrt #库名字

8:执行autoheader 目的为了防止automake的时候说缺少头文件报错

9:执行automake --add-missing  让其自动寻找缺少的头文件,可能会有些警告,忽略,执行完后会生成Makefile.in文件

10:./configure 生成Makefile  再 make,会成可执行文件


0 0