Я использую 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 компилировать все файлы во всех подкаталогах, как если бы они все были в одном месте?
Я надеюсь, что я понятен (и прошу прощения за некоторые проблемы, которые вы могли бы найти в моих словах, потому что я француз)
Заранее спасибо.