Обычно мы имеем это в MakefileПравило делают за многословие
%.o:%.c
$(cc) $(flags) -o [email protected] -c $<
Когда количество флагов огромна, я чувствую себя лучше, чтобы написать это вместо того, чтобы
%.o:%.c
$(info $(cc): $< --> [email protected])
@$(cc) $(flags) -o [email protected] -c $<
Однако это может быть полезно когда-нибудь все увидит. Таким образом, я определил переменную для этого:
[email protected]
%.o:%.c
$(info $(cc): $< --> [email protected])
$(at)$(cc) $(flags) -o [email protected] -c $<
Мой вопрос заключается в том, как правильно, легко установить или сбросить $(at)
из командной строки. Я вижу два решения:
$ make verbose all
$ make verbose=1 all
С первым решением я хотел бы сделать это
ifeq (,$(filter verbose,$(MAKECMDGOALS)))
[email protected]
dummy:=$(filter-out verbose,$(MAKECMDGOALS)))
endif
Со вторым я мог бы сделать это
ifeq (,$(filter 1,$(verbose)))
[email protected]
endif
ли оба решения приемлемы, или я могу сделать лучше ?
Отлично, это именно то, что я искал. Благодарю. – nowox