I'm creating my first autoconf/automake project and need some advice on
the standard way to structure my project source code (if there is such a
thing). My project consist of a (libtool) library and a few example
applications that are using the library.
Right now my directory structure is as follows:
\ configure.ac, toplevel Makefile.am
\src Makefile.am, *.h and *.c files for the library
\examples Makefile.am, *.h and *.c files for the examples
I noticed it is common practice to install the public headers to
$includedir/libfoo (rather than straight into $includedir), especially
when the library has multiple public header files. So that's what I'm doing.
For applications depending on the library, I noticed there are two
approaches in use:
CFLAGS=-I${includedir}
#include <libfoo/header.h>
or
CFLAGS=-I${includedir}/libfoo
#include <header.h>
I think the first one is preferable (but I might be wrong), because it
makes it very clear from which library the header file is included. And
there is also no possibility of conflicts with a header file of the same
name from another package.
But how do structure my project to make this work? Everything I tried
fails to build either the library or the examples, because of problems
with finding the header files. For instance, if I use the
<libfoo/header.h> style include in my project, it fails to build
anything, because the header files are not installed yet and thus can't
be found.