Linux下autotools的使用

Linux下autotools的使用

由于某些原因(持续集成:travis-ci+github),需要给项目写个Makefile。虽然可以直接去写Makefile,但autotools似乎更快捷。
整个项目最初在windows下编写,make这些工作都由VS做了。但travis-ci给c++提供的环境是linux。不得不转移到linux下,重头到尾构建了一遍。

(1)源代码
将源代码统一放到calculator文件夹下,路径为:/home/adver/calculator
这里写图片描述
由于windows和linux环境下编译器不同,对源代码做了简单的修改,如:宏定义HUGE_VAL要想在linux下使用,需要包含math.h文件。

(2)Autotools的使用
1.autoscan
这里写图片描述
可以理解成扫描当前目录下的所有文件,然后生成configure.scan,将该文件重命名为 configure.ac(mv configure.scan configure.ac),并将内容修改如下:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
#项目名,版本号,作者邮箱地址
AC_INIT([calculator], [1.0], [linduo@xxx.com])
#可以理解为包含main函数的源文件
AC_CONFIG_SRCDIR([calculator.cpp])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_HEADER_STDBOOL

# Checks for library functions.
AC_FUNC_STRTOD
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

2.aclocal
使用aclocal命令,扫描 configure.ac文件,会生成aclocal.m4文件。该命令主要处理本地(local)的宏定义。

3.autoconf
使用autoconf命令,将configure.ac文件展开,同时会使用aclocal.m4文件,生成configure脚本。

4.autoheader
使用autoheader命令,根据configure.ac生成autoconfig.h.in
这里写图片描述

5.Make文件的创建
(1)首先,手动创建Makefile.am文件

touch Makefile.am

(2)根据项目具体内容,编辑该文件。
UTOMAKE_OPTIONS:automake的一个选项,默认为gnu。可以设置为foreign, gnu和gnits, foreign只检测必须的文件。
**bin_PROGRAMS:**执行文件名称。
calculator_SOURCES:执行文件所需的文件,注意若程序名为xxx,需要修改为xxx_SOURCES。

UTOMAKE_OPTIONS = foreign  
bin_PROGRAMS = calculator  
calculator_SOURCES = AddNode.cpp AddNode.h AssignNode.cpp AssignNode.h BinNode.cpp BinNode.h calculator.cpp DivideNode.cpp DivideNode.h FunctionTable.cpp FunctionTable.h FunNode.cpp FunNode.h Htable.cpp Htable.h IStack.cpp IStack.h List.cpp List.h MultNode.cpp MultNode.h Node.cpp Node.h NumNode.cpp NumNode.h Parser.cpp Parser.h Scanner.cpp Scanner.h Store.cpp Store.h StringBuffer.h SubNode.cpp SubNode.h SymbolTable.cpp SymbolTable.h UMinusNode.cpp UMinusNode.h VarNode.cpp VarNode.h

(3)automake 生成make.in文件
使用如下命令,可自动生成几个必要的辅助文件。多运行automake --add-missingmake.in几次,知道不再提示缺少任何文件。(这个过程可能会提示缺少如:NEWS等4个文件,使用touch NEWS新建即可)。
成功后,会生成Makefile.in文件。

automake --add-missing

(4)生成Makefile文件
接下来,使用**./configure**命令,生成最终的Makefile文件。
这里写图片描述
到此,便可以使用make构建我们的项目,生成可执行文件。在make前,再看一下此时项目包含的文件。
这里写图片描述

(5)make

make

这里写图片描述

./calulator

这里写图片描述

Linux系列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值