Условные операторы для проверки флагов
Вы можете написать условный оператор, проверяющий флаги команд make , такие как ‘-t’, используя переменную MAKEFLAGS вместе с функцией findstring (см. Функции для подстановки и анализа строк). Это полезно, когда touch недостаточно, чтобы сделать файл видимым как обновлённый.
Напомним, что MAKEFLAGS поместит все однобуквенные опции (например, ‘-t’) в первое слово, и это слово будет пустым, если однобуквенные опции не были указаны. Для работы с этим полезно добавить значение в начало, чтобы гарантировать наличие слова: например, ‘-$(MAKEFLAGS)’.
Функция findstring определяет, появляется ли одна строка как подстрока другой. Если вы хотите проверить флаг ‘-t’, используйте ‘t’ как первую строку и первое слово MAKEFLAGS как вторую.
Например, вот как использовать ‘ranlib -t’, чтобы завершить пометку архива как обновлённого:
archive.a: …
ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS))))
+touch archive.a
+ranlib -t archive.a
else
ranlib archive.a
endif
Префикс ‘+’ отмечает эти строки рецепта как «рекурсивные», чтобы они выполнялись независимо от использования флага ‘-t’. См. Рекурсивное использование make.
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Testing-Flags.html