Я использую Linux, Ubuntu 10.04.
Я не первый раз пытаюсь использовать автоинструменты. Я провел много исследований и следил за множеством руководств: вот что я хочу делать, что я пробовал и с какой проблемой я столкнулся.
Цель:
- скомпилировать (а затем кросс-компилировать, но это будет другая работа) мою собственную библиотеку, написанную на C с использованием libtool, autoconf и automake
Что я пробовал и где я нахожусь:
Имя библиотеки - FXPLib, имя пакета - libfxplib-0.1.
Папка моего проекта:
Makefile.am (the only one) include include/fxplib.h (main header) include/FXPLib include/FXPLib/header1.h (these are public headers) include/FXPLib/header2.h include/FXPLib/... src src/sub1/file1.c src/sub2/file1.c src/sub3 ...
Я запустил автосканирование, получил configure.ac, отредактировал его, как здесь:
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. 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 # Checks for programs. AC_PROG_CC AC_PROG_MAKE_SET # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([stdlib.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL # Checks for library functions. AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([memset]) 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 = include/fxplib.h \ include/FXPLib/header1.h \ include/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 компилировать все файлы в каждом подкаталоге, как если бы все они были в одном месте?
Надеюсь, меня можно понять (и извиняюсь за некоторые проблемы, которые вы могли найти в моих словах, потому что я француз)
Заранее благодарю.