Размещение файлов заголовков в подкаталоге /usr/include с помощью automake?

Если я пишу библиотеку и включаю файлы заголовков для разработки, и у меня есть src/Makefile.am вроде этого:

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

Все работает хорошо. Однако a.h и b.h устанавливаются непосредственно под /usr/include (или /usr/local/include). Что мне делать, чтобы установить их в подкаталог, относящийся к моей библиотеке, например. /usr/include/mylibrary?


person Delan Azabani    schedule 09.04.2011    source источник


Ответы (2)


Помимо pkginclude_HEADERS, который вы упомянули, вы также можете установить заголовочные файлы в произвольный подкаталог /usr/include с любым именем, например так:

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

Преимущество использования pkginclude_HEADERS = publicHeader.h заключается в том, что в большой системе каждый пакет остается в своем собственном подкаталоге $prefix/include и исключает возможность перезаписи заголовков из другого пакета с тем же именем. Кроме того, это соглашение об именах помогает пользователям легко находить заголовок для конкретного пакета.

person ptomato    schedule 10.04.2011
comment
Я продолжаю получать Makefile.am: 9: ошибка: используется «otherinclude_HEADERS», но «otherincludedir» не определен (разобрался, мне нужно было использовать имя, указанное как подкаталог, в этом случае «include» вместо «otherinclude») - person Mark Harviston; 14.12.2012
comment
(нет, это не сработало, он продолжает включать/PropID.h вместо include/7zip/PropID.h) - person Mark Harviston; 14.12.2012
comment
(сумасшедший, я дислектик, otherincludedir не просто otherinclude) - person Mark Harviston; 14.12.2012

Похоже, я слишком быстро задал вопрос о переполнении стека ;)
Немного поискав, я обнаружил, что если я использую pkginclude_HEADERS вместо include_HEADERS, заголовки переходят в /usr/include/[package name].

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

person Delan Azabani    schedule 09.04.2011
comment
Вам когда-нибудь удавалось избежать размещения заголовка в [package name]subdir? Я имею в виду: могут ли все заголовки быть установлены непосредственно в /usr/include/? - person LPs; 21.04.2016
comment
@LPs Не совсем понял, о чем вы спрашиваете. Как ранее сказал Делан, он использовал include_HEADERS и файлы были установлены непосредственно под /usr/include - person Vadim Kotov; 20.10.2017