Spec-Zone.ru › GNU Make

Запись рецептов с помощью поиска по каталогам

Когда необходимый компонент находится в другом каталоге через поиск по каталогам, это не может изменить рецепт правила; они будут выполняться так, как написано. Поэтому вы должны тщательно составить рецепт, чтобы он искал необходимый компонент в том каталоге, где make его находит.

Это делается с помощью автоматических переменных, таких как ‘$^’ (см. Автоматические переменные). Например, значение ‘$^’ — это список всех необходимых компонентов правила, включая имена каталогов, в которых они были найдены, а значение ‘$@’ — это целевой объект. Таким образом:

foo.o : foo.c
        cc -c $(CFLAGS) $^ -o $@

(Переменная CFLAGS существует, чтобы вы могли указать флаги для компиляции C неявными правилами; мы используем ее здесь для согласованности, чтобы она влияла на все компиляции C одинаково; см. Переменные, используемые неявными правилами.)

Часто необходимые компоненты включают заголовочные файлы, которые вы не хотите упоминать в рецепте. Автоматическая переменная ‘$<’ — это просто первый необходимый компонент:

VPATH = src:../headers
foo.o : foo.c defs.h hack.h
        cc -c $(CFLAGS) $< -o $@

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/Recipes_002fSearch.html

Spec-Zone.ru

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