Эффективное использование GNU Make


Функции манипуляции с текстом - часть 2


Например, в результате выполнения make-файла: source_files := Editor/Editor.cpp TextLine/TextLine.cpp source_files := $(notdir $(source_files)) all: @echo $(source_files)

на экран будет выведено Editor.cpp TextLine.cpp Видно, что из имен файлов убраны "пути" к этим файлам. Функция notdir обсуждается в разделе "Functions for File Names" руководства по GNU Make.

Функция patsubst позволяет изменить указанным образом слова, подходящие под шаблон. Она принимает три параметра - шаблон, новый вариант слова и исходную строку. Исходная строка рассматривается как список слов, разделенных пробелом. Каждое слово, подходящее под указанный шаблон, заменяется новым вариантом слова. В шаблоне может использоваться специальный символ '%', который означает "любое количество произвольных символов". Если символ '%' встречается в новом варианте слова (втором параметре), то он заменяется текстом, соответствующим символу '%' в шаблоне. Например, в результате выполнения make-файла: source_files := Editor.cpp TextLine.cpp object_files := $(patsubst %.cpp, %.o, $(source_files)) all: @echo $(object_files)

на экран будет выведено Editor.o TextLine.o

Видно, что во всех словах окончание ".cpp" заменено на ".o". Функция patsubst имеет второй, более короткий вариант записи для тех случаев, когда надо изменить суффикс слова (например, заменить расширение в имени файла). Более короткий вариант выглядит так: $(имя_переменной:.старый_суффикс=.новый_суффикс) Применяя "короткий" вариант записи предыдущий пример можно записать так: source_files := Editor.cpp TextLine.cpp object_files := $(source_files:.cpp=.o) all: @echo $(object_files)

Функция patsubst обсуждается в разделе "Functions for String Substitution and Analysis" руководства по GNU Make.


- Начало -  - Назад -  - Вперед -