这两个文件主要出现在开源项目中。
它们的作用是什么?它们是如何工作的?
这两个文件主要出现在开源项目中。
它们的作用是什么?它们是如何工作的?
Makefile。am是一个程序员定义的文件,automake使用它来生成Makefile。在文件中(.am代表automake)。 通常在源tarball中看到的配置脚本将使用Makefile。生成Makefile。
configure脚本本身是从一个名为either configure的程序员定义的文件生成的。Ac或configure。(弃用)。我更喜欢.ac(对于autoconf),因为它将它与生成的Makefile区分开来。在文件中,这样我就可以有一些规则,比如make dist-clean,它运行rm -f *.in。由于它是一个生成的文件,所以通常不会存储在Git、SVN、Mercurial或CVS等修订系统中,而是存储在.ac文件中。
阅读更多关于GNU Autotools的内容。 首先阅读make和Makefile,然后学习automake, autoconf, libtool等。
简单的例子
无耻地改编自:http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html,并在Ubuntu 14.04 Automake 1.14.1上测试。
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 / c
#include <config.h>
#include <stdio.h>
int main (void) {
puts ("Hello world from " PACKAGE_STRING);
return 0;
}
使用
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autotools_hello_world
sudo make uninstall
这个输出:
Hello world from automake_hello_world 1.0
笔记
autoreconf——install生成几个应该由Git跟踪的模板文件,包括Makefile.in。它只需要第一次运行。 使安装安装: 二进制文件到/usr/local/bin 自述文件。Md到/usr/local/share/doc/automake_hello_world
你可以在GitHub上试用一下。
参考:
Makefile。Am—一个用户输入文件自动制作
配置。在——用户输入文件到autoconf
Autoconf从configure.in生成configure
automake生成Makefile。从Makefile.am进入
configure从Makefile.in生成Makefile
为例:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
DEVELOPER运行autoconf和automake:
Autoconf——创建可发布的配置脚本 (安装程序稍后将运行以生成Makefile)
' autoconf '是一个宏处理器。 它转换配置。Ac,这是一个使用宏指令的shell脚本,变成configure,一个成熟的shell脚本。
automake -创建可传送的Makefile。数据文件 (configure稍后将读取该文件以生成Makefile)
Automake帮助创建可移植的和符合gnu标准的makefile。 ' automake '创建复杂的Makefile。从简单的Makefile.ams
安装程序运行configure, make和sudo make install:
./configure # Creates Makefile (from Makefile.in).
make # Creates the application (from the Makefile just created).
sudo make install # Installs the application
# Often, by default its files are installed into /usr/local
输入/输出地图
下面的符号大致是:输入——>程序——>输出
DEVELOPER运行这些:
配置。Ac -> autoconf -> configure (script)——(*.)Ac = autoconf) 配置。在——> autoconf -> configure (script)中——(configure. conf)在贬值。使用configure.ac)
Makefile.am -> 自动制作 -> Makefile.in ----------- (*.am = 自动制作)
安装程序运行这些:
Makefile。in -> configure -> Makefile (*.)In = input文件)
Makefile -> make ---------->(将新软件放在您的下载或临时目录中) make install ->(把新软件放在系统目录下)
autoconf是一个可扩展的M4宏包,它可以生成shell脚本来自动配置软件源代码包。这些脚本可以使包适应多种类unix系统,而无需用户手动干预。Autoconf从模板文件中为包创建配置脚本,该模板文件以M4宏调用的形式列出了包可以使用的操作系统特性。”
automake是一个自动生成Makefile的工具。在符合GNU编码标准的文件中。Automake需要使用Autoconf。”
手册:
GNU AutoTools(这方面的权威手册) M4 (autoconf使用) autoconf automake
免费在线教程:
使用GNU自动工具
例子:
主配置。ac用于构建LibreOffice的代码超过12k行,(但还有57个其他配置。Ac文件在子文件夹。)
由此,我生成的配置超过41k行代码。
而Makefile。in和Makefile都只有493行代码。(但是,还有768个Makefile。In在子文件夹中。)