Autoconf компиляция зависимостей перед применением - PullRequest
1 голос
/ 12 июня 2009

Последние пару дней я работал с автоинструментами и, наконец, добился значительных успехов. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что у меня есть две библиотеки, которые нужно скомпилировать перед основным кодом приложения. Я не совсем уверен, как это сделать. Моя структура каталогов ниже и фрагмент из моего файла configure.ac.

AC_CONFIG_FILES([Makefile
         src/Makefile
         gtkworkbook/Makefile
         csv/Makefile])
AC_OUTPUT

Мне нужно, чтобы оба csv / Makefile и gtkworkbook / Makefile были скомпилированы до src / Makefile ; есть ли способ указать это? Прямо сейчас я получаю сообщение об ошибке библиотеки (csv), не существующей в процессе компиляции приложения.

1 Ответ

4 голосов
/ 12 июня 2009

Порядок элементов в AC_CONFIG_FILES () не влияет на порядок сборки. Если вы используете automake, который, как я полагаю, используется, он будет проходить по вашему дереву каталогов в том порядке, в котором вы перечисляете каталоги в каждом списке SUBDIRS Makefile.am.

При этом у вас должен быть порядок элементов в AC_CONFIG_FILES (), отражающий порядок сборки для согласованности / ремонтопригодности.

Пример того, как ваш подчиненный файл Makefile.am должен построить в нужном порядке:

SUBDIRS = csv gtkworkbook src

Кроме того, для этого простого случая вам не нужны как AC_CONFIG_FILES (), так и AC_OUTPUT (). Вы можете передать каталог со списком в AC_OUTPUT ():

AC_OUTPUT([
    Makefile
    src/Makefile
    gtkworkbook/Makefile
    csv/Makefile
])
...