Spec-Zone.ru › GNU Make

Как выполняются поиски в каталогах

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

Алгоритм make использует для принятия решения о сохранении или отклонении пути, найденного в результате поиска по каталогу, следующим образом:

  1. Если целевой файл не существует по пути, указанному в файле make, выполняется поиск по каталогу.
  2. Если поиск по каталогу успешен, этот путь сохраняется, и этот файл временно сохраняется в качестве целевого.
  3. Все предварительные условия этого целевого объекта проверяются с использованием этого же метода.
  4. После обработки предварительных условий целевой объект может потребоваться или не потребоваться перестроение:
    1. Если целевой объект не нуждается в перестроении, путь к файлу, найденному в результате поиска по каталогу, используется для любых списков предварительных условий, которые содержат этот целевой объект. Короче говоря, если make не нуждается в перестроении целевого объекта, тогда вы используете путь, найденный в результате поиска по каталогу.
    2. Если целевой объект нуждается в перестроении (устарел), путь, найденный в результате поиска по каталогу, отбрасывается, и целевой объект перестраивается с использованием имени файла, указанного в файле make. Короче говоря, если make необходимо перестроить, тогда целевой объект перестраивается локально, а не в каталоге, найденном в результате поиска по каталогу.

Этот алгоритм может показаться сложным, но на практике он довольно часто является именно тем, что вам нужно.

Другие версии make используют более простой алгоритм: если файл не существует и найден в результате поиска по каталогу, то этот путь всегда используется, независимо от того, необходимо ли перестраивать целевой объект или нет. Таким образом, если целевой объект перестраивается, он создается по пути, обнаруженному в результате поиска по каталогу.

Если, фактически, вы хотите, чтобы такое поведение применялось ко всем или к некоторым вашим каталогам, вы можете использовать переменную GPATH для указания этого make.

GPATH имеет тот же синтаксис и формат, что и VPATH (то есть, список путей, разделенных пробелом или двоеточием). Если устаревший целевой объект найден в результате поиска по каталогу в каталоге, который также появляется в GPATH, то этот путь не отбрасывается. Целевой объект перестраивается с использованием расширенного пути.

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/Search-Algorithm.html

Spec-Zone.ru

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