Spec-Zone.ru › GNU Make

Синхронизированный вывод терминала

Обычно GNU make вызывает все команды с доступом к стандартному и ошибочному выводу, с которым был запущен сам make. Ряд инструментов определяет, является ли вывод терминалом или нет, и использует эту информацию для изменения стиля вывода. Например, если вывод направляется на терминал, инструмент может добавить управляющие символы, устанавливающие цвет, или даже изменить позицию курсора. Если вывод не направляется на терминал, эти специальные управляющие символы не генерируются, чтобы не повредить файлы журналов и т. д.

Опция --output-sync (см. Вывод во время параллельного выполнения) отключит обнаружение терминала. При включенной синхронизации вывода GNU make организует запись всего вывода команд в файл, чтобы вывод мог быть записан блоком без помех от других команд. Это означает, что все инструменты, вызванные make, будут считать, что их вывод не будет отображаться на терминале, даже если он будет (потому что make отобразит его там после завершения команды).

Для облегчения определения инструментами, будет ли их вывод отображаться на терминале, GNU make установит переменные среды MAKE_TERMOUT и MAKE_TERMERR перед вызовом любых команд. Инструменты, которые хотят определить, будет ли стандартный или ошибочный вывод (соответственно) отображаться на терминале, могут проверить эти переменные среды, чтобы определить, существуют ли они и содержат ли ненулевое значение. В этом случае инструмент может предположить, что вывод (в конечном итоге) будет отображаться на терминале. Если переменные не установлены или имеют пустое значение, инструмент должен вернуться к своим обычным методам определения того, направляется ли вывод на терминал или нет.

Содержимое переменных можно проанализировать, чтобы определить тип терминала, который будет использоваться для отображения вывода.

Аналогично, среды, которые вызывают make и хотели бы захватить вывод и в конечном итоге отобразить его на терминале (или на каком-либо дисплее, который может интерпретировать управляющие символы терминала), могут установить эти переменные перед вызовом make. GNU make не будет изменять эти переменные среды, если они уже существуют при запуске.

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/Terminal-Output.html

Spec-Zone.ru

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