Spec-Zone.ru › GNU Make

Избегание перекомпиляции некоторых файлов

Иногда вы можете изменить исходный файл, но не хотите перекомпилировать все файлы, зависящие от него. Например, предположим, что вы добавили макрос или объявление в заголовочный файл, от которого зависят многие другие файлы. Будучи консервативным, make предполагает, что любое изменение в заголовочном файле требует перекомпиляции всех зависимых файлов, но вы знаете, что их перекомпилировать не нужно, и вы предпочитаете не тратить время на ожидание их компиляции.

Если вы предвидите проблему до изменения заголовочного файла, вы можете использовать флаг ‘-t’. Этот флаг сообщает make не выполнять рецепты в правилах, а вместо этого пометить цель как обновленную, изменив ее дату последнего изменения. Вы бы последовали этой процедуре:

  1. Используйте команду ‘make’, чтобы перекомпилировать исходные файлы, которые действительно нуждаются в перекомпиляции, убедившись, что объектные файлы актуальны перед началом.
  2. Внесите изменения в заголовочные файлы.
  3. Используйте команду ‘make -t’, чтобы пометить все объектные файлы как актуальные. В следующий раз, когда вы запустите make, изменения в заголовочных файлах не приведут к какой-либо перекомпиляции.

Если вы уже изменили заголовочный файл в момент, когда некоторые файлы нуждаются в перекомпиляции, уже слишком поздно это делать. Вместо этого вы можете использовать флаг ‘-o file’, который помечает указанный файл как «старый» (см. Список опций). Это означает, что сам файл не будет пересоздан, и ничего больше не будет пересоздано из-за него. Следуйте этой процедуре:

  1. Перекомпилируйте исходные файлы, которые нуждаются в компиляции по причинам, не зависящим от конкретного заголовочного файла, с помощью ‘make -o headerfile’. Если задействовано несколько заголовочных файлов, используйте отдельный параметр ‘-o’ для каждого заголовочного файла.
  2. Обновите все объектные файлы с помощью ‘make -t’.

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/Avoiding-Compilation.html

Spec-Zone.ru

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