Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Placing header files in a subdirectory of /usr/include with automake?

If I write a library, and have header files for development included, and have a src/Makefile.am like this:

AM_CFLAGS = -std=c99 -Wall -Werror -Os
lib_LTLIBRARIES = libmylibrary.la
libmylibrary_la_SOURCES = a.c b.c
include_HEADERS = a.h b.h

Everything works nicely. However, a.h and b.h are installed directly under /usr/include (or /usr/local/include). What should I do to get them installed, in a subdirectory specific to my library, e.g. /usr/include/mylibrary?

like image 373
Delan Azabani Avatar asked Apr 09 '11 08:04

Delan Azabani


2 Answers

As well as pkginclude_HEADERS, which you mention, you can also install header files into an arbitrary subdirectory of /usr/include with any name you like, like this:

otherincludedir = $(includedir)/arbitrary_name
otherinclude_HEADERS = a.h b.h

The advantage of using pkginclude_HEADERS = publicHeader.h is that in a large system, each package stay in its own subdirectory of $prefix/include and avoids the chance of overwriting headers from different package with the same name. Furthermore, this naming convention helps users easily locate the header for a particular package.

like image 107
ptomato Avatar answered Nov 16 '22 03:11

ptomato


Looks like I asked Stack Overflow too quickly ;)
With a little more searching, I found that if I use pkginclude_HEADERS instead of include_HEADERS, the headers go in /usr/include/[package name].

http://realmike.org/blog/2010/07/18/gnu-automake-by-example/

like image 8
Delan Azabani Avatar answered Nov 16 '22 02:11

Delan Azabani