2009-10-04 3 views
1

У меня есть куча каталогов. Я хочу построить объект для каждого каталога. Пусть OBJS содержит «сборки/dir1 сборки/dir2 сборки/DIR3», и рисунок я соответствие являетсяСоздание генерации зависимостей с использованием оболочки и%?

build/%: % 
    <do something here> 

Я хотел бы добавить, для каждого объекта, зависимости для каждого файла в этой директории (рекурсивно). Я думал о чем-то вроде

build/%: $(shell find %) 
    <do something here> 

Но похоже, что второй «%» не расширен. Как я могу заставить это работать?

(Weird вещь, которую я заметил, что '%' в '$ (оболочка эхо%)' расширяется.)

Спасибо.

+0

Ваш вопрос непонятен. Вы хотите сделать build/obj1, и вы хотите, чтобы каждый файл в build/dir1 являлся необходимым условием (и то же для dir2 и dir3)? – Beta

ответ

3

Я не думаю, что вы можете вызвать процесс вычисления зависимостей. Единственный способ запустить процесс для создания зависимостей заключается в том, что переменная получает результат процесса и использует эту переменную, но это не решит вашу проблему.

Общее решения заключается в создании файлов зависимости, и включить их:

 
include build/*.depend 

build/%: build/%.depend % 
    ... 

build/%.depend: 
    command to generate explicit dependencies for build/% into build/%.depend 
    possibly recursive make invocations 

В первый раз вы строите, не файл зависимостей не будет сгенерирован, но результаты сборки не будут, либо, так так или иначе, действие сборки будет работать. При последующих make-вызовах туда включаются файлы include и учитываются make.

Смежные вопросы