以什么顺序调用autotools来创建构建系统?

时间:2012-06-30 20:38:36

标签: c autotools

我正在尝试使用autotools为C程序创建构建系统。但是,在阅读info automake之后,我仍然对开发人员调用哪些工具的顺序感到困惑。

让我们考虑一个非常简单的hello world应用程序。在应用程序的根目录中,只有简单的src/hello.c而没有别的。需要以什么顺序调用哪些工具来创建configureMakefile

我自己想到(部分阅读文档,部分只是尝试)autoscan首先出现并生成configure.ac的“草图”。然后autoheader显然会创建一个头文件(为什么?)。接下来autoconf最终会创建configure脚本,最终会创建config.h

但是,我仍然遗漏Makefile我相信是automake创建的,但这需要Makefile.am我不知道如何生成。该文件是由生成器生成还是由开发人员手写?

2 个答案:

答案 0 :(得分:2)

自动工具的功能往往会在边缘模糊。有一个体面的流程图描述了排序hereMakefile.am通常是手写的。许多项目在源树的顶层保留一个简单的shell脚本,即autogen.shinitgen.sh。我使用autogen.sh

#! /bin/sh

case `uname` in Darwin*) glibtoolize --copy ;;
    *) libtoolize --copy ;; esac

aclocal -I m4 --install
autoheader
autoconf

automake --foreign --add-missing --force-missing --copy

This仍然是我见过的最好的实用指南之一。我相信它也可以书本形式出现。

答案 1 :(得分:1)

你的Makefile.am应该看起来像

bin_PROGRAMS = hello
AUTOMAKE_OPTIONS = foreign
hello_SOURCES = src/hello.c

运行automake,它将创建一个Makefile.in