Сделать фильтрацию по правилу - PullRequest
0 голосов
/ 14 октября 2011

У меня есть правило make вроде

app.o: app.c b.c a.c h.h file.list

Я использую правило $^, чтобы выполнить какое-либо действие для всех зависимостей.Но я хочу фильтровать по расширению файла по зависимости.Как я могу это сделать?

Я хочу переменную

k = (which contain only .c file from dependency list )

1 Ответ

2 голосов
/ 14 октября 2011

Если вы используете GNU Make , то

$(filter %.c,$^)

выполнит трюк (фильтр возвращает все слова, соответствующие заданному шаблону из списка, filter-out возвращает несоответствиеиз них).Если вы используете более примитивный make, вам придется прибегнуть к

APP_O_C_DEPS = app.c b.c a.c
APP_O_NONC_DEPS = h.h file.list
app.o: $(APP_O_C_DEPS) $(APP_O_NONC_DEPS)
        ...

Примечание: Способ работы переменных в Make позволяет вам сказать

c_deps = $(filter %.c,$^)
app.o: app.c b.c a.c h.h file.list
    something $(c_deps)

и расширится до зависимостей .c текущей цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...