Я создаю несколько «основных» файлов и в настоящее время придерживаюсь следующего неявного правила:
$(PROJECT_ROOT)build/%.bin: $(PROJECT_ROOT)obj/%.o $(DEPS)
@mkdir -p $(dir $@)
@g++ -o $@ $^
Теперь мне нужно иметь специальные инструкции по связыванию для некоторых «основных» файлов.Я определил исключения следующим образом:
SPECIAL_TARGET_1 = $(PROJECT_ROOT)build/...
SPECIAL_TARGET_2 = $(PROJECT_ROOT)build/...
SPECIAL_TARGETS = $(SPECIAL_TARGET_1) $(SPECIAL_TARGET_2)
и попытался отфильтровать их следующим образом:
$(filter-out $(SPECIAL_TARGETS), $(PROJECT_ROOT)build/%.bin): $(PROJECT_ROOT)obj/%.o $(DEPS)
@mkdir -p $(dir $@)
@g++ -o $@ $^
, но filter-out
ничего не фильтрует.
Как правильно исключить несколько файлов из неявного правила?