Automake: добавить файлы по маске

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2561
ОС: Debian

Automake: добавить файлы по маске

Сообщение IMB »

Доброго дня!
Есть небольшая библиотека с интерфейсами на C и C++, сборка осуществляется с использованием Makefile.

Код: Выделить всё

TARGET        := $(notdir $(CURDIR))
C_SRC_FILES        := $(wildcard $(SRC_DIR)/$(TARGET)_*.c)
CPP_SRC_FILES    := $(wildcard $(SRC_DIR)/$(TARGET)_*.cpp)
C_OBJ_FILES        := $(notdir $(C_SRC_FILES:%.c=%.o))
CPP_OBJ_FILES    := $(notdir $(CPP_SRC_FILES:%.cpp=%.o))

library: prep_lib
    $(CC) $(CFLAGS) -Iprivate -std=c99 -fPIC -c $(C_SRC_FILES)
    $(CC) -shared -Wl,-R$(LIB_TARGET),-soname,$(TARGET).so.$(LIB_VER) \
        -o $(LIB_DIR)/$(TARGET).so.$(LIB_VER) $(C_OBJ_FILES)
    [ -L $(LIB_DIR)/$(TARGET).so ] || \
        ln -s $(TARGET).so.$(LIB_VER) $(LIB_DIR)/$(TARGET).so
    $(AR) crs $(LIB_DIR)/$(TARGET).a $(C_OBJ_FILES)
    $(CXX) $(CFLAGS) -Iprivate -fPIC -c $(CPP_SRC_FILES)
    $(CXX) -shared -Wl,-R$(LIB_TARGET),-soname,$(TARGET)++.so.$(LIB_VER) \
        -o $(LIB_DIR)/$(TARGET)++.so.$(LIB_VER) $(CPP_OBJ_FILES)
    [ -L $(LIB_DIR)/$(TARGET)++.so ] || \
        ln -s $(TARGET)++.so.$(LIB_VER) $(LIB_DIR)/$(TARGET)++.so
    $(AR) crs $(LIB_DIR)/$(TARGET)++.a $(CPP_OBJ_FILES)
    $(STRIP) --strip-all $(LIB_DIR)/*.so

Сейчас пробую, в основном в образовательных целях, добавить сборку средствами libtool, тестовый Makefile.am:

Код: Выделить всё

TARGET        = $(notdir $(CURDIR))
AM_CFLAGS    = -Wall -Wextra -Werror -pedantic -Iinc
AM_CFLAGS    += -std=c99

lib_LTLIBRARIES = $(TARGET).la
lib_c_SOURCES = $(wildcard $(SRC_DIR)/$(TARGET)_*.c)
lib_cpp_SOURCES = $(wildcard $(SRC_DIR)/$(TARGET)_*.cpp)
lib_CPPFLAGS = $(AM_CFLAGS)

При вызове automake вижу сообщения о ошибках:

Код: Выделить всё

Makefile.am:1: notdir $(CURDIR: non-POSIX variable name
Makefile.am:1: (probably a GNU make extension)
Makefile.am:17: wildcard $(SRC_DIR: non-POSIX variable name
Makefile.am:17: (probably a GNU make extension)
Makefile.am:18: wildcard $(SRC_DIR: non-POSIX variable name
Makefile.am:18: (probably a GNU make extension)
Makefile.am:16: `$(TARGET).la' is not a standard libtool library name
Makefile.am:16: did you mean `lib$(TARGET).la'?
Makefile.am:18: variable `lib_cpp_SOURCES' is defined but no program or
Makefile.am:18: library has `lib_cpp' as canonical name (possible typo)
Makefile.am:17: variable `lib_c_SOURCES' is defined but no program or
Makefile.am:17: library has `lib_c' as canonical name (possible typo)

Собственно вопрос - как в файле Makefile.am можно добавить исходные файлы по маске?
Для примера посмотрел в libxml2, но там исходники просто перечислены. Используемые пакеты - libtool 2.2.6b-2, automake 1:1.11.1-1, autoconf 2.67-2.
Спасибо.
Спасибо сказали:
Ответить