Рассмотрим этот Makefile
all: a.out
a.out: group_1 group_2
group_1: CXXFLAGS = -Wall
group_2: CXXFLAGS = -Wextra
group_1: a.o b.o
group_2: c.o
Хотя он, вероятно, будет работать нормально, я хочу знать, как правильно написать это, потому что в соответствии с GNU Make docs, group_1
и group_2
должно быть .PHONY
целей, так как это не реальные цели, а просто способ группировки набора целей с одинаковой конфигурацией.
Но, в то же время, .PHONY
цели не должны использоватьсяв качестве предварительных условий для других целей в соответствии с рекомендациями документов.Поэтому я не знаю, как правильно указать такую структуру зависимости.
Цель этого, если я не ошибаюсь, в целях оптимизации.Я хочу, чтобы CXXFLAGS
оценивался как можно меньше, и я предполагаю, что Makefile
подобно
all: a.out
a.out: a.o b.o c.o
a.o b.o: CXXFLAGS = -Wall
c.o: CXXFLAGS = -Wextra
будет оцениваться CXXFLAGS
один раз за предварительное условие, в то время как с предыдущим методом, только один раз на группу,поэтому мой первый Makefile
должен работать быстрее (экстраполировать на большие деревья зависимостей).