Как автоматизировать компиляцию кода с различными комбинациями флагов через один Makefile - PullRequest
2 голосов
/ 16 января 2012

Предположим, у меня есть Makefile со следующими флагами:

CFLAGS+=FLAG1
.............
CFLAGS+=FLAG2
.............
CFLAGS+=FLAG3
.............
CFLAGS+=FLAG4
.............
CFLAGS+=FLAG5

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

Пример:

Error log for a particular Flag Combination:

Combination: FLAG1 FLAG3 FLAG5
errors       ................. (may be blank as well).

Спасибо.

1 Ответ

1 голос
/ 16 января 2012

Вы должны настроить выходной каталог для каждой комбинации флагов.Таким образом, вы должны:

  • Создать make-файл, который определит действительные правила.Выходные файлы должны быть размещены в другом каталоге, чем исходные файлы.Для этого есть два варианта: либо
    • использовать соответствующие настраиваемые префиксы для всех путей, либо
    • использовать переменную VPATH (чем выводится текущий каталог, а источники ищутся в VPATH).
  • Создайте make-файл с соответствующими настройками для каждого каталога, который будет включать правила.

Если у вас есть два варианта отправки make:

  1. Запускать каждую сборку отдельно, возможно, имея make-файл верхнего уровня, который будет запускать каждую сборку как отдельный процесс (рекурсивно), или
  2. определять правила с значениями переменных, специфичными для цели и включите их все из make-файла верхнего уровня.Это также потребует, чтобы правила были только для файлов в определенном каталоге, поэтому вы не можете использовать VPATH и вам нужно будет либо использовать шаблоны типа $(out_dir)/%.o : %.c, либо вам нужно использовать правила статического шаблона, который явно перечисляет цели, к которым они применяются.
...