Правильно ли я использую libtool?

Я использую Linux, Ubuntu 10.04.

Это не первый раз пытаюсь использовать автоинструменты. Я провел много исследований и слежу за множеством руководств: вот что я хочу делать, что пробовал и с какой проблемой сталкиваюсь.

Цель :

  • компилировать (а затем кросс-компилировать, но это будет другая работа) моя собственная библиотека, написанная на C с использованием libtool, autoconf и automake

Что я пробовал и где я нахожусь : включают include / fxplib.h (основной заголовок) включить / FXPLib include / FXPLib / header1.h (это общедоступные заголовки) включить / FXPLib / header2.h включить / FXPLib / ... src SRC / sub1 / file1.c SRC / sub2 / file1.c src / sub3 ...

  • Я запустил автосканирование, получил configure.ac, отредактировал его следующим образом:

     # - * - Autoconf - * -
    # Обработать этот файл с помощью autoconf, чтобы создать сценарий настройки.
    
    AC_PREREQ ([2.65])
    AC_INIT ([libfxplib-0.1], [0.1], [<>])
    AC_CONFIG_SRCDIR ([src / object_system / FXP_image_s.h])
    AC_CONFIG_HEADERS (config.h)
    
    AC_CONFIG_MACRO_DIR ([m4])
    
    AM_INIT_AUTOMAKE
    AM_PROG_LIBTOOL
    
    LT_PREREQ ([2.2])
    LT_INIT
    
    # Проверяет наличие программ.
    AC_PROG_CC
    AC_PROG_MAKE_SET
    
    # Проверяет наличие библиотек.
    
    # Проверяет файлы заголовков.
    AC_CHECK_HEADERS ([stdlib.h])
    
    # Проверяет определения типов, структуры и характеристики компилятора.
    AC_HEADER_STDBOOL
    
    # Проверяет библиотечные функции.
    AC_FUNC_MALLOC
    AC_FUNC_REALLOC
    AC_CHECK_FUNCS ([набор памяти])
    
    AC_CONFIG_FILES ([Makefile])
    AC_OUTPUT
    
  • Я написал Makefile.am так:

     lib_LTLIBRARIES = libfxplib-0.1.la
    libfxplib_0_1_la_CFLAGS = -I $ (srcdir) / include -I $ (srcdir) / include / FXPLib `sdl-config --cflags --libs` -lSDL_image
    libfxplib_0_1_la_SOURCES = src / sub1 / file1.c \
     SRC / sub1 / file2.c \
     SRC / sub2 / file1.h \
     ...
    nobase_include_HEADERS = включить / fxplib.h \
     включить / FXPLib / header1.h \
     включить / FXPLib / header2.h \
     ...
    ACLOCAL_AMFLAGS = -I m4
    
  • Затем я запустил aclocal и autoheader , чтобы получить файлы, необходимые для automake
  • . Затем самое важное: autoconf
  • И: automake - add-missing --copy
  • Дальше все в порядке. Но затем я пытаюсь скомпилировать:

    $ ./configure
    

    Все тоже в порядке ...

    $ make
    

    и получаю:

    ...
    src/graphics_engine/FXP_rendering.c:35:25: error: FXP_image_s.h: File not found
    ...
    

    где:

    • «graphics_engine» эквивалентно src / sub
    • «FXP_rendering.c» до src / sub / file.c
    • «FXP_image_s.h» до src / sub2 / header.h

    Это означает: automake может компилировать файлы .c в подкаталоге, но не может включать в эти файлы частный файл .h, который находится в другом подкаталоге.

    Моя проблема : Как указать automake компилировать все файлы в каждом подкаталоге, как если бы они все были в одном месте?

    Надеюсь, меня можно понять (и извиняюсь за некоторые проблемы, которые вы могли найти в моих словах, потому что я француз)

    Заранее благодарю.

    5
    задан Jérôme Martin 12 March 2011 в 22:22
    поделиться