Как получить абсолютные пути после сопоставления vpath в make? - PullRequest
2 голосов
/ 12 января 2010

У меня есть make-файл, который в зависимости от некоторых свойств устанавливает vpath и генерирует список исходных файлов в одну переменную. Мне нужно запустить make-файл без компиляции (сборка фактически выполняется другим make-файлом) и просто посмотреть, с какими реальными файлами совпадают имена файлов в зависимости от настроек vpath.

1 Ответ

6 голосов
/ 17 апреля 2010

Вариант 1: Пусть make выполняет поиск по пути:

.PHONY: whichfiles
whichfiles: $(LIST_OF_SOURCE_FILES)
    @echo $+

Вариант 2. Имитация поиска пути с использованием $ (подстановочный знак):

.PHONY: whichfiles
whichfiles:
    @echo $(foreach f,$(LIST_OF_SOURCE_FILES),$(firstword $(wildcard $(VPATH:%=%/$f)) not-found:$f))

В любом случае, «make whichfiles» напечатает список подходящих файлов.

Если некоторые из файлов не могут быть найдены, вариант 1 завершится неудачно с сообщением «нет правил для создания», сообщающим о первом файле, который не может быть найден. Вариант 2 будет печатать «not-found:» для каждого отсутствующего файла.

...