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 файлов как-то не очень(хотя сейчас так и есть)...

★★★★★

> libbla_la_SOURCES = ../bla/*.c

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

arsi ★★★★★ ()

Где-то в манах видел мысль, что глобы намеренно не поддерживаются. Типа один раз всё вбить явно (и избежать потенциальных неоднозначностей) не влом должно быть. И правда ведь, перечислить 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 ★★★★★ ()
Ответ на: комментарий от Jetty

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

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