Automake + libtool: шаблонное правило для CFLAGS для каждого объекта?

Я использую GNU Automake и libtool для компиляции своей программы. Мой Makefile.am выглядит так:

lib_LTLIBRARIES = \
    libObjectively.la

libObjectively_la_SOURCES = \
    Array.c \
    Class.c \
    Condition.c \
    Date.c \
    DateFormatter.c \
    Dictionary.c \
    Lock.c \
    Log.c \
    Object.c \
    String.c \
    Thread.c

libObjectively_la_CFLAGS = \
    -I ..

libObjectively_la_LDFLAGS = \
    -pthread \
    -shared

Все компилируется нормально. Однако я бы хотел установить CFLAGS для каждого исходного файла, также используя шаблонное правило. В обычном старом синтаксисе Makefile это выглядело бы примерно так:

%.o: %.c
    $(CC) $(CFLAGS) -D__Class=$(subst .o,,$@) -o $@ $<

Есть ли способ сделать это с помощью Automake + libtool?


person jdolan    schedule 18.11.2014    source источник
comment
Вы имеете в виду, что хотите добавить -D__Class=$(subst .0,,$@) к обычному шаблонному правилу?   -  person Etan Reisner    schedule 18.11.2014
comment
Я имею в виду, что я хотел бы иметь какой-то эквивалент этого правила шаблона в совместимом с Automake способе, который совместим с libtool. Правило шаблона, которое я разместил, было просто примером того, как оно может выглядеть в GNU Makefile, а НЕ в Automake Makefile.am.   -  person jdolan    schedule 19.11.2014
comment
Верно, но я пытался понять, какую часть этого вы на самом деле стремились добавить сами. Автоинструменты просто создают make-файлы, которые используются. Это означает, что встроенные правила все еще существуют и т. д. Итак, вопрос заключался в том, что аргумент -D вы пытаетесь добавить правило по умолчанию, которое создает файлы .o, или что-то еще в этой строке?   -  person Etan Reisner    schedule 19.11.2014
comment
Попался. Итак, это вопрос на 10 000 долларов: могу ли я внедрить шаблонное правило, которое захватит или дополнит этап компиляции libtool?   -  person jdolan    schedule 19.11.2014


Ответы (1)


Оказывается, нет портативного способа сделать что-то подобное.

person jdolan    schedule 22.12.2014