Сделать генерацию зависимостей используя shell и%? - PullRequest
1 голос
/ 04 октября 2009

У меня есть куча каталогов. Я хочу построить объект для каждого каталога. Предположим, что OBJS содержит «build / dir1 build / dir2 build / dir3», и шаблон, который я сопоставляю, равен

build/%: %
    <do something here>

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

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

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

(Странная вещь, которую я заметил, это то, что '%' в '$ (shell echo%)' расширен.)

Спасибо.

Ответы [ 2 ]

3 голосов
/ 04 октября 2009

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

Распространенным решением является создание файлов зависимостей и их включение:

include build/*.depend

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

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

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

1 голос
/ 04 октября 2009
You could try:
DIR := %
$(shell find $(DIR))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...