Spec-Zone.ru › GNU Make

Неявленное правило для целей членов архива

Вспомните, что цель, которая выглядит как a(m), обозначает член с именем m в файле архива a.

Когда make ищет неявленное правило для такой цели, в качестве специальной функции оно рассматривает неявленные правила, которые соответствуют (m), а также те, которые соответствуют фактической цели a(m).

Это вызывает одно специальное правило, чья цель — (%). Это правило обновляет цель a(m), копируя файл m в архив. Например, оно обновит цель члена архива foo.a(bar.o), скопировав файл bar.o в архив foo.a в качестве члена с именем bar.o.

Когда это правило используется с другими правилами, результат очень мощный. Таким образом, «make "foo.a(bar.o)"» (кавычки необходимы для защиты «(» и «)» от специальной интерпретации оболочкой) при наличии файла bar.c достаточно для выполнения следующей команды, даже без файла makefile:

cc -c bar.c -o bar.o
ar r foo.a bar.o
rm -f bar.o

Здесь make представил файл bar.o как промежуточный файл. См. Цепочки неявленных правил.

Неявленные правила, такие как это, записываются с использованием автоматической переменной «$%». См. Автоматические переменные.

Имя члена архива в архиве не может содержать имя каталога, но в файле makefile может быть полезно предположить, что оно это делает. Если вы напишете цель члена архива foo.a(dir/file.o), make выполнит автоматическое обновление с помощью этой команды:

ar r foo.a dir/file.o

что имеет эффект копирования файла dir/file.o в член с именем file.o. В связи с таким использованием могут быть полезны автоматические переменные %D и %F.

• Символы архива Как обновить каталоги символов архива.

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/Archive-Update.html

Spec-Zone.ru

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