LINUX.ORG.RU

Automake


0

1

Делаю проект на автотулзе, столкнулся в двумя проблемами, все никак не могу найти как их порешать. Первая:

Makefile.am:
lib_LTLIBRARIES = libbla.la
libbla_la_SOURCES = ../bla/*.c
Непонятно как передать список файлов из каталога(по маске). При указаном переменной он подставляет прямо эту строку, т.е. получается
gcc -c ../bla/*.c
Соответственно фейл... Конструкции вида $(ls ../bla/*.c) и подобные непроходят так как «это не POSIX»... Подскажите плиз :) А то вручную вписывать 30 файлов как-то не очень(хотя сейчас так и есть)...

★★★★★

Последнее исправление: Jetty (всего исправлений: 2)

> libbla_la_SOURCES = ../bla/*.c

<пальцемвнебо>
libbla_la_SOURCES = $(wildcard ../bla/*.c)
или даже
libbla_la_SOURCES := $(wildcard ../bla/*.c)
</пальцемвнебо>

arsi ★★★★★
()
Ответ на: комментарий от arsi
$ automake
Makefile.am:4: wildcard ../bla/*.c: non-POSIX variable name
Makefile.am:4: (probably a GNU make extension)
$

В этом то и драма :)

Jetty ★★★★★
() автор топика

Где-то в манах видел мысль, что глобы намеренно не поддерживаются. Типа один раз всё вбить явно (и избежать потенциальных неоднозначностей) не влом должно быть. И правда ведь, перечислить 30 файлов не сложнее, чем написать этим самые 30 файлов ;)

const86 ★★★★★
()

перлом распарсить глоб и вставить в нужное место по регекспу, не?

DELIRIUM ☆☆☆☆☆
()

Напиши в configure.ac

BLA_SRC=$(ls ../bla/*.c)
AC_SUBST([BLA_SRC])
в Makefile.am
libbla_la_SOURCES = @BLA_SRC@
Хотя лучше явно перечислить. И вообще как-то неправильно, что ты собираешь не в каталоге с исходниками.

unsigned ★★★★
()
Ответ на: комментарий от Reset

> можно подумать, что autotools умеют генерить makefile'ы для чего-то отличного от gnu make

Можно.

kemm
()
AUTOMAKE_OPTIONS = foreign -Wno-portability
lib_LTLIBRARIES = libbla.la

libbla_SOURCES = $(wildcard *.c)
am_libbla_OBJECTS = $(patsubst .c, $(OBJEXT), $(test_SOURCES))

Но не советую так делать - это криво и неудобно, а прописать не так уж и сложно.

rymis ★★
()

Да действительно я таки нашел глубокой ночью в ФАКе автомейка что вилдкарты и любые «авто перечисления» совсем не тру, и что как таковой поддержки их нет и про флажек тож нашел :)
Всеравно всем спасибо :), сделал как обычно :)
ls ../bla/*.c | awk '{print $1" \";}' >> Makefile.am
:)

Jetty ★★★★★
() автор топика
Ответ на: комментарий от unsigned

А что плохого в том что собирается проект вне дерева исходников? :)
Оч даж удобно я вам скажу :)

Jetty ★★★★★
() автор топика
Ответ на: комментарий от Jetty

Да не, я имел в виду, что если исходники лежат в bla/, то и правила их сборки должны лежать в bla/Makefile.am, и путей вида ../dir/ тогда не будет.

unsigned ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.