2015-11-20 5 views
0

Я пытаюсь скомпилировать библиотеку с autotools. Библиотека отлично компилируется со следующим Makefile.am в его библиотеке исходный каталог/ЦСИinclude_HEADERS и нет правила для цели, необходимой для 'all-am'

lib_LTLIBRARIES = libgtkchart.la 

libgtkchart_la_CFLAGS = $(CFLAGS) -fPIC -Wall $(gtk_CFLAGS) 
libgtkchart_la_LIBADD = $(gtk_LIBS) $(glib_LIBS) 
libgtkchart_la_LDFLAGS = -fPIC -shared -version-info 1:0:0 
libgtkchart_la_SOURCES = gtkchart.c gtkaxis.c gtkbarchart.c gtkchartdata.c gtkchart.h gtkaxis.h gtkbarchart.h gtkbarchartdata.h 

, но если добавить следующую строку в этом файле:

include_HEADERS = gtkaxis.h gtkbarchart.h gtkbarchartdata.h gtkchart.h 

Я получаю следующее сообщение об ошибке:

make[2]: *** No rule to make target 'gtkbarchartdata.h', needed by 'all-am'. Stop. 

Мой главный MAkefile.am в библиотеке/является

SUBDIRS = src 
ACLOCAL_AMFLAGS= -I m4 

и мой configure.ac является

AC_CONFIG_MACRO_DIRS([m4]) 
AC_INIT([library], [1.0], [me]) 
AM_PROG_AR 
AM_INIT_AUTOMAKE([-Wall -Werror foreign]) 
AC_PROG_CC 
AC_DISABLE_STATIC 
AC_PROG_LIBTOOL 
AC_CONFIG_HEADERS([config.h]) 
AC_CONFIG_FILES([ 
Makefile 
src/Makefile 
]) 
LT_INIT 
AC_OUTPUT 

Я не могу понять, почему потребность в мишени для этого файла заголовка.

ответ

0

When you assign header files to the include_HEADERS , automake must be able to locate the header.

Например,, если иметь следующую структуру каталогов:

src 
    Makefile.am 
    GTKBarCharDataDirectory 
    SomeOtherDirectory 
    gtkaxis.h 
    gtkbarchart.h 
    gtkchart.h 

И gtkbarchartdata.h находится в директории GTKBarCharDataDirectory, то вам необходимо изменить include_Headers быть:

include_HEADERS = gtkaxis.h gtkbarchart.h GTKBarCharDataDirectory/gtkbarchartdata.h gtkchart.h 

make должен знать относительный путь файла заголовка при использовании переменной include_Headers. Это связано с тем, что семейство переменных HEADER работает иначе, чем семейство переменных SOURCES.

automake won't fail if you list a non-existent/not-found header file in the libgtkchart_la_SOURCES variable, since Header files listed in a _SOURCES definition will be included in the distribution but otherwise ignored.

here Проверить и here для справки

+0

Моя структура каталогов очень проста и все исходные файлы и файлы заголовков находятся в том же каталоге, Makefile.am Это не должно быть виновником –

Смежные вопросы