生成makefile(2)

2019-08-03 14:49

AUTOMAKE_OPTIONS= foreign bin_PROGRAMS= hello hello_SOURCES= hello.c 五、automake

生成 Makefile.in, depcomp, install-sh, 和 missing (根据 Makefile.am, 和 aclocal.m4)

[litao@vm0000131 hello]$ automake

configure.in: required file `./install-sh' not found configure.in: required file `./missing' not found Makefile.am: required file `./depcomp' not found [litao@vm0000131 hello]$ automake --add-missing configure.in: installing `./install-sh' configure.in: installing `./missing' Makefile.am: installing `./depcomp' [litao@vm0000131 hello]$ ll total 192

-rw-rw-r-- 1 litao litao 31120 Aug 12 12:08 aclocal.m4 drwxr-xr-x 2 litao litao 4096 Aug 12 12:14 autom4te.cache -rw-rw-r-- 1 litao litao 0 Aug 12 12:03 autoscan.log -rwxrwxr-x 1 litao litao 122297 Aug 12 12:11 configure -rw-rw-r-- 1 litao litao 496 Aug 12 12:08 configure.in lrwxrwxrwx 1 litao litao 31 Aug 12 12:16 depcomp -> /usr/share/automake-1.9/depcomp

-rw-rw-r-- 1 litao litao 68 Aug 12 12:02 hello.c

lrwxrwxrwx 1 litao litao 34 Aug 12 12:16 install-sh -> /usr/share/automake-1.9/install-sh

-rw-rw-r-- 1 litao litao 69 Aug 12 12:15 Makefile.am -rw-rw-r-- 1 litao litao 16561 Aug 12 12:16 Makefile.in lrwxrwxrwx 1 litao litao 31 Aug 12 12:16 missing -> /usr/share/automake-1.9/missing

六、configure

生成 Makefile, config.log, 和 config.status

autotools系列工具—-自动生成Makefile

在较大项目中, 如果手动维护Makefile, 那将是一件复杂并痛苦的事情. 那么, 有没有一种轻松的手段生成Makefile呢? autotools系列工具正是在这样的呼声中诞生的. 它只需用户输入简单的目标文件, 依赖文件, 文件目录等就可以轻松地生成Makefile了. 另外, 这些工具还可以完成系统配置信息的收集, 从而可以方便地处理各种移植性问题.

autotools是系列工具, 它含有:

? ? ? ? ?

aclocal autoscan autoconf autoheader automake

autotools 使用流程

下面用一个简单的hello.c程序, 演示autotools的使用流程. hello.c如下:

wangsheng@pc01:~/work/train/make/automake$ ls hello.c wangsheng@pc01:~/work/train/make/automake$ cat hello.c #include int main() { printf(\ return 0; } (1) 使用autoscan命令自动生成configure.scan文件

它会在给定目录及其子目录树中检查源文件, 若没有给出目录, 就在当前目录及其子目录树中进行检查.它会搜索源文件以寻找一般的移植性问题并创建一个文件”configure.scan”, 该文件就是接下来autoconf要用到的”configure.in”原型.

wangsheng@pc01:~/work/train/make/automake$ autoscan wangsheng@pc01:~/work/train/make/automake$ ls autoscan.log configure.scan hello.c (2)将configure.scan重命名为configure.in, 并做适当修改 configure.scan的内容:

wangsheng@pc01:~/work/train/make/automake$ cat configure.scan # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([hello.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT 将configure.scan重命名为configure.in

wangsheng@pc01:~/work/train/make/automake$ mv configure.scan configure.in 根据具体情况, 适当修改, 以下加粗部分是修改的内容:

wangsheng@pc01:~/work/train/make/automake$ cat configure.in # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) #AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_INIT(hello,1.0) AM_INIT_AUTOMAKE(hello,1.0) AC_CONFIG_SRCDIR([hello.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT 说明:

? ? ? ?

以”#”号开始的行为注释

AC_PREREQ宏声明本文要求的autoconf版本, 如本例中的版本 2.65

AC_INIT宏用来定义软件的名称和版本等信息, 在本例中省略了BUG-REPROT-ADDRESS, 一般为作者的E-mail AM_INIT_AUTOMAKE是手动添加的, 它是automake所必备的宏, 也同前面一样, PACKAGE是所要产生软件套件的名称,VERSION是版本编号.

?

AC_CONFIG_SCRDIR宏用来侦测所指定的源码文件是否存在, 来确定源码目录的有效性. 在此处指当前目录下hello.c

?

AC_CONFIG_FILES宏用于生成相应的Makefile文件.

(3) 运行aclocal命令,生成”aclocal.m4″文件, 该文件主要处理本地的宏定义

wangsheng@pc01:~/work/train/make/automake$ aclocal wangsheng@pc01:~/work/train/make/automake$ ls aclocal.m4 autom4te.cache autoscan.log configure.in hello.c (4) 运行autoconf命令生成configure可执行文件

wangsheng@pc01:~/work/train/make/automake$ autoconf


生成makefile(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:辩论赛论文- 论“知人易 自知难”

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: