关于automake 使用hello world例子。
A Small Hello World
In this section we recreate the amhello-1.0 package from scratch. The first subsection
shows how to call the Autotools to instantiate the GNU Build System, while the second
explains the meaning of the configure.ac and Makefile.am files read by the Autotools.
Creating amhello-1.0.tar.gz
Here is how we can recreate amhello-1.0.tar.gz from scratch. The package is simple
enough so that we will only need to write 5 files. (You may copy them from the final
amhello-1.0.tar.gz that is distributed with Automake if you do not want to write them.)
Create the following files in an empty directory.
src/main.c is the source file for the hello program. We store it in the src/ subdirectory, because later, when the package evolves, it will ease the addition of a man/
directory for man pages, a data/ directory for data files, etc.
~/amhello % cat src/main.c #include <config.h> #include <stdio.h> int main (void) { puts ("Hello World!"); Chapter 2: An Introduction to the Autotools 14 puts ("This is " PACKAGE_STRING "."); return 0; }
README contains some very limited documentation for our little package.
~/amhello % cat README This is a demonstration package for GNU Automake. Type ’info Automake’ to read the Automake manual.
Makefile.am and src/Makefile.am contain Automake instructions for these two directories.
~/amhello % cat src/Makefile.am bin_PROGRAMS = hello hello_SOURCES = main.c ~/amhello % cat Makefile.am SUBDIRS = src dist_doc_DATA = README
Finally, configure.ac contains Autoconf instructions to create the configure script.
~/amhello % cat configure.ac AC_INIT([amhello], [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
Once you have these five files, it is time to run the Autotools to instantiate the build
system. Do this using the autoreconf command as follows:
~/amhello % autoreconf --install configure.ac: installing ’./install-sh’ configure.ac: installing ’./missing’ configure.ac: installing ’./compile’ src/Makefile.am: installing ’./depcomp’
At this point the build system is complete.
In addition to the three scripts mentioned in its output, you can see that autoreconf
created four other files: configure, config.h.in, Makefile.in, and src/Makefile.in.
The latter three files are templates that will be adapted to the system by configure under
the names config.h, Makefile, and src/Makefile.