GNU-Tool中怎么实现自动化工程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1.autoscan
autoscan 用来在给定目录及其子目录树中检查源文件,扫描源代码目录从而生成 configure.scan 文件。autoscan 可以用目录名作为参数,也可以省略参数,此时 autoscan 将把当前目录当作参数。
configure.scan 文件很重要,它是 configure.in 文件的原型,通过修改 configure.scan 后得到 configure.in 文件。
2.aclocal
aclocal 是一个 perl 脚本程序。aclocal 根据 configure.in 文件的内容,自动生成 aclocal.m4 文件。aclocal 的定义是: “ aclocal-create aclocal.m4 by scanning configure.ac "
3.autoconf
autoconf 是用来产生 configure 文件的。configure 是一个脚本,它能设置源程序来适应不同的操作系统平台,并且根据不同的系统生成合适的 Makefile ,从而可以使源代码能够在不同的操作系统平台上被编译出来。
4.autoheader
autoheader 负责生成 config.h.in 文件。该工具通常从 acconfig.h 文件中复制用户添加的符号定义。
5.automake
automake 是工具集中的重要成员之一,它调用脚本文件 Makefile.am , 并最终生成 configure 文件。我们就是通过调用 configure 文件来自动产生 makefile 的。
第一步 扫描本地目录
autoscan
第二步 重新命名为ac文件
mv configure.scan configure.ac
第三部 编辑configure.ac
第四步configure.ac文件宏说明:
AC_PRERREQ 宏声明文件要求的 autoconf 版本
AC_INIT 宏用来定义软件的名称和版本等信息。
其中FULL-PACKAGE-NAME 表示软件的名称;
VERSION 为软件的版本号;
BUG-REPORT-ADDRESS 一般为作者的 E-mail
文件宏顺序说明:
AC_INIT
测试程序
测试函数库
测试头文件
测试类型定义
测试结构
测试编译器特性
测试库函数
测试系统调用
AC_OUTPUT
加入下面两个宏在configure.ac文件中
AM_INIT_AUTOMAKE([-Wall -Werror foreign]) 生成make参数
AC_CONFIG_FILES([Makefile]) 宏用于生成相应的 Makefile 文件
第五步 这里可能会生成一个 aclocal.m4 ,该文件主要处理本地的宏定义:
aclocal
第六步骤 生成configure文件
autoconf
第七步 生成配置头文件
autoheader
第八步 创建Makefile.am,增加编译目标文件和源文件
Makefile.am
第九步 生成Makefile文件
automake --add-missing
第十步 编译配置
./configure --prefix=$(pwd)/install
第十一步
make && make install
simple:
Makefile.am
SUBDIRS = src dist_doc_DATA = README.md
README.md
Some doc.
configure.ac
AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_PROG_CC AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ Makefile src/Makefile ]) AC_OUTPUT
src/Makefile.am
bin_PROGRAMS = autotools_hello_world autotools_hello_world_SOURCES = main.c
src/main.c
#include <config.h> #include <stdio.h> int main (void) { puts ("Hello world from " PACKAGE_STRING); return 0; }
Usage
autoreconf --install mkdir build cd build ../configure make sudo make install autoconf_hello_world sudo make uninstall
This outputs:
Hello world from automake_hello_world 1.0
关于GNU-Tool中怎么实现自动化工程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。