一般情况下,我会手动编写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,会成可执行文件