Я пишу make-файл, который имеет несколько целей для архитектур и типов сборок. Когда я вызываю make, я хотел бы иметь возможность передать ему две цели, такие как:
make x86 debug
Где цель архитектуры устанавливает переменные, которые будут использоваться целью сборки. Цель архитектуры может выглядеть так:
.PHONY: x86
x86: NAME_PREFIX = x86_64_Linux
x86: TARGET_TRIPLE = x86_64-pc-linux-elf
x86: CC = gcc
x86: CFLAGS += -fomit-frame-pointer
Первая проблема: если я запускаю две цели, make пропускает первую цель, поскольку она ничего не делает, кроме как устанавливает переменные.
$ make x86 debug
make: Nothing to be done for `x86'.
Вторая проблема: даже если бы она запускала первую цель, я понимаю, что значения не будут сохранены, когда make все равно начнет запускать вторую цель.
На данный момент я использую цели, которые устанавливают переменные и добавляют цель типа сборки в качестве предварительного условия в конце тела цели, но в итоге мне понадобится цель для каждой комбинации архитектуры и типа сборки.
.PHONY: x86_debug
x86_debug: NAME_PREFIX = x86_64_Linux
x86_debug: TARGET_TRIPLE = x86_64-pc-linux-elf
x86_debug: CC = gcc
x86_debug: CFLAGS += -fomit-frame-pointer
x86_debug: debug