Added documentation
This commit is contained in:
parent
2bc328f237
commit
c61d9afb3a
|
@ -13,5 +13,5 @@ testsuite_CFLAGS = $(DEPS_CFLAGS) # DEPS_* are filled by PKG_CHECK_MODULES
|
||||||
testsuite_LDADD = $(DEPS_LIBS) # in configure.ac
|
testsuite_LDADD = $(DEPS_LIBS) # in configure.ac
|
||||||
|
|
||||||
testsuite_SOURCES = tests/test.c
|
testsuite_SOURCES = tests/test.c
|
||||||
TESTS = testsuite
|
TESTS = testsuite # https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html#Scripts_002dbased-Testsuites
|
||||||
|
|
||||||
|
|
60
README
60
README
|
@ -1,32 +1,60 @@
|
||||||
# autotools-template
|
# autotools-template
|
||||||
Template for an autotools (autoconf, automake) project
|
Template for an autotools (autoconf, automake) project
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
Setting up an `Autotools` build system can be daunting. So I decided to
|
||||||
|
create a template with the basics to use as the basis for my projects.
|
||||||
|
|
||||||
|
It may be surprising to the novice that there is no `./configure` but
|
||||||
|
`./configure` is a generated file that it's shipped with the
|
||||||
|
distribution of your software (the tarball that you get `make dist`).
|
||||||
|
As such the `./configure` doesn't belong in the source control
|
||||||
|
repository. Running `autoreconf -f` will generate `./configure` and a
|
||||||
|
bunch of other files.
|
||||||
|
|
||||||
|
To build from scrath you need to perform:
|
||||||
|
|
||||||
|
autoreconf -i # Only needed if configure.ac or Makefile.am changes
|
||||||
|
./configure # generates Makefiles and config.h
|
||||||
|
make # build
|
||||||
|
make check # run the tests
|
||||||
|
|
||||||
|
|
||||||
|
I'm not an autotools expert by any means. So take my advice with a grain
|
||||||
|
of salt.
|
||||||
|
|
||||||
|
There are two input files:
|
||||||
|
|
||||||
|
* `configure.ac`: The `./configure` script will be generated from
|
||||||
|
from it. Here is were you check for libraries,
|
||||||
|
headers, etc.
|
||||||
|
* `Makefile.am`: This file will be transformed into `Makefile.in` that
|
||||||
|
`./configure` will use to generate the `Makefile`.
|
||||||
|
|
||||||
|
What to do after cloning the repository
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
configure.ac
|
||||||
|
------------
|
||||||
|
|
||||||
Edit configure.ac to change the FULL-PACKAGE-NAME, VERSION and
|
Edit configure.ac to change the FULL-PACKAGE-NAME, VERSION and
|
||||||
BUG-REPORT-ADDRESS fields to match your project.
|
BUG-REPORT-ADDRESS fields to match your project.
|
||||||
|
|
||||||
Edit src/Makefile.am to configure the "products" or executables.
|
Makefile.am
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Edit src/Makefile.am to say which "products" (executables, binaries)
|
||||||
|
will be generated and what are the source files for each one.
|
||||||
|
|
||||||
bin_PROGRAMS = executable1 executable2
|
bin_PROGRAMS = executable1 executable2
|
||||||
executable1_SOURCES = sourcefile1.c sourcefile2.c
|
executable1_SOURCES = sourcefile1.c sourcefile2.c
|
||||||
executable1_CFLAGS =
|
executable1_CFLAGS =
|
||||||
executable2_SOURCES = sourcefile3.c sourcefile4.c
|
executable2_SOURCES = sourcefile3.c sourcefile4.c
|
||||||
executable2_CFLAGS =
|
executable2_CFLAGS =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
./autogen.sh will generate ./configure and the Makefile.in files
|
|
||||||
from the configure.ac, Makefile.am and src/Makefile.am files
|
|
||||||
|
|
||||||
./configure will generate config.h and Makefile and src/Makefile
|
|
||||||
|
|
||||||
|
|
||||||
Run:
|
|
||||||
./autogen.sh && ./configure && make
|
|
||||||
|
|
||||||
to test the whole setup.
|
|
||||||
|
|
||||||
You need to run ./autogen.sh && ./configure after modifying *.ac or *.am files
|
|
||||||
|
|
||||||
Reference material
|
Reference material
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user