Spec-Zone.ru › GNU Make

Функции для имён файлов

Несколько встроенных функций расширения относятся конкретно к разбору имён файлов или списков имён файлов.

Каждая из следующих функций выполняет определённое преобразование имени файла. Аргумент функции рассматривается как ряд имён файлов, разделенных пробелами. (Пробелы в начале и конце игнорируются.) Каждое имя файла в ряду преобразуется одинаково, а результаты конкатенируются с одиночными пробелами между ними.

$(dir names…)

Извлекает часть пути каталога для каждого имени файла в names. Частью пути каталога является всё до (и включая) последнего слэша в имени файла. Если имя файла не содержит слэша, часть пути каталога — строка ‘./’. Например,

$(dir src/foo.c hacks)

производит результат ‘src/ ./’.

$(notdir names…)

Извлекает всё, кроме части пути каталога, для каждого имени файла в names. Если имя файла не содержит слэша, оно остаётся без изменений. В противном случае всё до последнего слэша удаляется из него.

Имя файла, заканчивающееся слэшем, становится пустой строкой. Это неудобно, потому что это означает, что результат не всегда имеет такое же количество имён файлов, разделенных пробелами, как и аргумент; но мы не видим других приемлемых альтернатив.

Например,

$(notdir src/foo.c hacks)

производит результат ‘foo.c hacks’.

$(suffix names…)

Извлекает расширение каждого имени файла в names. Если имя файла содержит точку, расширением является всё, начиная с последней точки. В противном случае расширение — пустая строка. Это часто означает, что результат будет пустым, когда names не пустой, и если names содержит несколько имён файлов, результат может содержать меньше имён файлов.

Например,

$(suffix src/foo.c src-1.0/bar.c hacks)

производит результат ‘.c .c’.

$(basename names…)

Извлекает всё, кроме расширения, для каждого имени файла в names. Если имя файла содержит точку, имя файла без расширения — это всё, что идёт до (но не включая) последней точки. Точки в части пути каталога игнорируются. Если точки нет, имя файла без расширения — это всё имя файла.

Например,

$(basename src/foo.c src-1.0/bar hacks)

производит результат ‘src/foo src-1.0/bar hacks’.

$(addsuffix suffix,names…)

Аргумент names рассматривается как ряд имён, разделённых пробелами; suffix используется как единица. Значение suffix добавляется к концу каждого отдельного имени, а полученные более длинные имена конкатенируются с одиночными пробелами между ними. Например,

$(addsuffix .c,foo bar)

производит результат ‘foo.c bar.c’.

$(addprefix prefix,names…)

Аргумент names рассматривается как ряд имён, разделённых пробелами; prefix используется как единица. Значение prefix добавляется в начало каждого отдельного имени, а полученные более длинные имена конкатенируются с одиночными пробелами между ними. Например,

$(addprefix src/,foo bar)

производит результат ‘src/foo src/bar’.

$(join list1,list2)

Конкатенирует два аргумента по слову: первые два слова (одно из каждого аргумента) образуют первое слово результата, вторые два слова — второе слово результата и так далее. Таким образом, n-ое слово результата происходит от n-ого слова каждого аргумента. Если один аргумент имеет больше слов, чем другой, дополнительные слова копируются в результат без изменений.

Например, ‘$(join a b,.c .o)’ производит ‘a.c b.o’.

Пробелы между словами в списках не сохраняются; они заменяются одним пробелом.

Эта функция может объединить результаты функций dir и notdir, чтобы получить исходный список файлов, который был передан этим двум функциям.

$(wildcard pattern)

Аргумент pattern — это шаблон имени файла, обычно содержащий символы подстановки (как и в шаблонах имён файлов оболочки). Результатом wildcard является список имён существующих файлов, которые соответствуют шаблону, разделённый пробелами. См. Использование символов подстановки в именах файлов.

$(realpath names…)

Для каждого имени файла в names возвращается каноническое абсолютное имя. Каноническое имя не содержит каких-либо . или .. компонентов, а также не содержит повторяющихся разделителей пути (/) или символических ссылок. В случае ошибки возвращается пустая строка. Обратитесь к документации realpath(3) за списком возможных причин ошибок.

$(abspath names…)

Для каждого имени файла в names возвращается абсолютное имя, не содержащее каких-либо . или .. компонентов, а также не содержащее повторяющихся разделителей пути (/). Обратите внимание, что в отличие от функции realpath, функция abspath не разрешает символические ссылки и не требует, чтобы имена файлов ссылались на существующий файл или каталог. Используйте функцию wildcard для проверки существования.

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/File-Name-Functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API