1

我正在尝试使用 autotools 为 C 程序创建构建系统。但是,看完之后info automake,我还是很困惑开发者调用哪些工具的顺序。

让我们考虑一个非常简单的 hello world 应用程序。在应用程序的根目录中,只有简单的src/hello.c东西。需要按什么顺序调用什么工具来创建configure和一个Makefile

我自己想通了(部分阅读文档,部分只是尝试),autoscan它首先生成并生成configure.ac. 然后autoheader貌似创建了一个头文件(为什么?)。接下来autoconf最终创建configure脚本,该脚本最终将创建一个config.h.

但是,我仍然缺少一个Makefile我认为是由 创建的automake,但这需要一个Makefile.am我不知道如何生成的。这个文件是完全生成的还是由开发人员手写的?

4

2 回答 2

2

自动工具的功能往往在边缘模糊。有一个不错的流程图描述了这里的排序。通常Makefile.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

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

于 2012-07-01T05:07:00.700 回答
1

你的 Makefile.am 应该看起来像

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

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

于 2012-07-03T10:48:46.317 回答