1.写测试代码
#include <iostream>
using namespace std;
int main ()
{
cout << "Automake test! \n";
return 0;
}
2.autoscan
#autoscan
生成autoscan.log及configure.scan
貌似以下perl的错误是可以忽略的:
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE [^\}]*}/ at /usr/bin/autoscan line 361.
3.修改configure.ac
- 更名configure.scan
mv configure.scan configure.ac
- 修改configure.ac
修改AC_INIT,如AC_INIT([test], [1.0], [test@test.com])
增加AM_INIT_AUTOMAKE([test],[1.0])
修改AC_OUTPUT([Makefile])
4.运行 aclocal
#aclocal
生成autom4te.cache及aclocal.m4
5.运行 autoconf
#autoconf
生成configure
6.运行 autoheader
#autoheader
生成config.h.in
7.创建 Makefile.am
automake的输入脚本为Makefile.am,可以在该文件中定制编译的输出输出files, 传给下一步的automake
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=test
test_SOURCES=test.cpp
-
AUTOMAKE_OPTIONS
为automake的选项,定义了代码的严格级别,见(http://www.gnu.org/software/automake/):- foreign
只检查必须文件 - gnu
默认选项,需符合GNU规范 - gnits
兼容Gnits规范
- foreign
bin_PROGRAMS
定义了即将生成的可执行文件名test_SOURCES
定义了“test”这个程序所需要的原始文件, 可跟一个或多个文件,多个文件必须都列出来,用空格隔开
8.运行 automake
#automake --add-missing
--add-missing选项可以让automake自动添加有一些必需的模块, 这里会生成Makefile.in及其它一些缺失文件,当提示"required directory ./build-aux does not exist",需要手动创建该目录(mkdir build-aux); 提示"error: required file 'build-aux/ltmain.sh' not found"时,可通过libtoolize拷贝,即执行:
#libtoolize --automake --copy --debug --force
9.运行./configure
#./configure
生成Makefile文件
10.运行 make
#make
11.测试程序 ./test
#./test