Написание правила Makefile для единственной цели с множественными зависимостями - PullRequest
2 голосов
/ 11 января 2012

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

    analyze: a.v b.v c.v top.v
        vcs $(OPTIONS) a.v
        vcs $(OPTIONS) b.v
        vcs $(OPTIONS) c.v
        vcs $(OPTIONS) top.v

Выполнить анализ, скомпилирует все файлы в своей зависимости и соберет конечный исполняемый файл. Как я могу написать «ОДИНОЧНОЕ правило Makefile», которое скомпилирует все его зависимости и создаст исполняемый файл - имитируя вышеизложенное с правилом ЧТО-ТО КАК:

    analyze: %.v
        vcs $(OPTIONS) %.v

Вышеприведенное работает для зависимости одного файла. Но если у меня есть несколько файловых зависимостей, как я буду обрабатывать файлы с несколькими файлами? Могу ли я использовать «для цикла» для всех зависимостей. Я искал опции Makefile для доступа к «файлам зависимостей», которые будут использоваться в цикле for, но не смог найти их.

1 Ответ

2 голосов
/ 11 января 2012

Использовать фиктивную цель для каждого анализируемого файла:

analyze : a.analyzed-stamp b.analyzed-stamp c.analyzed-stamp top.analyzed-stamp

%.analyzed-stamp : %.v
    vcs $(OPTIONS) $<
    touch $@
...