Форматировщик Makefile
Гид
Форматировщик Makefile
Вставьте Makefile и форматировщик нормализует его в строгие правила табуляции рецептов GNU make. Строки рецептов, использующие пробелы вместо табуляции (наиболее распространённая причина ошибок «отсутствует разделитель» и частая проблема с AI-сгенерированными Makefile), автоматически восстанавливаются. Побочные пробелы, чрезмерные пустые строки и несогласованные пробелы при присваивании устраняются в одном проходе, и каждое изменение отображается, чтобы вы могли проверить его перед копированием.
Как использовать
- Вставьте свой Makefile в поле ввода — или нажмите Попробуйте пример чтобы загрузить образец с намеренными ошибками.
- Выберите ширину табуляции (используется для обнаружения ведущих строк, которые должны быть табуляцией).
- Включает опции очистки: преобразование пробелов в табуляции на строках рецептов, удаление завершающих пробелов, нормализация последовательных пустых строк, нормализация пробелов при присваивании и, при необходимости, выравнивание последовательных присваиваний переменных.
- Проверьте обзор проблемы и список исправлений по строкам, затем скопируйте или скачайте отформатированный Makefile.
Возможности
- Исправление табуляции рецептов — преобразует строки рецептов с пробелами в табуляцию (единственный тип ведущего символа, который GNU make принимает).
- Умная классификация строк — различает цели, присваивания переменных, условия (
ifeq,else,endif), директивы (include,vpath,export) и строки рецептов. - Пробелы вокруг присваивания — нормализует пробелы вокруг
=,:=,::=,?=,+=и!=. - Опциональное выравнивание столбцов — выравнивает последовательные присваивания переменных в один столбец оператора для улучшения читаемости.
- Отчёт о проблемах — каждое исправление показывается с номером строки источника, чтобы вы могли проверить изменения.
- Безопасность блоков определения — содержимое между
defineиendefсохраняется полностью. - Полностью на стороне клиента — ваш Makefile никогда не покидает браузер.
Часто задаваемые вопросы
-
Почему GNU make требует табуляции для строк рецептов?
Разборщик Make использует один символ табуляции как несомненный префикс, который указывает на то, что строка является частью рецепта правила. Это решение было установлено еще до первого публичного выпуска make в 1977 году и закреплено потому, что табуляция была надежной, ведущей меткой, которая не сталкивалась бы с пробелами внутри присваиваний переменных или определений целей. Несмотря на то, что это вызвало десятилетия недопонимания, изменение правила приведёт к неявному повреждению миллионов существующих Makefile, поэтому GNU make сохраняет табуляцию как стандартный RECIPEPREFIX.
-
Какова разница между =, :=, ::=, ?=, += и != в Makefile?
Рекурсивное присваивание (=) откладывает расширение до момента использования переменной, поэтому переменные при обращении ищутся в момент использования. Простое присваивание (:=) и POSIX-простое присваивание (::=) расширяют правую часть сразу, поэтому значение фиксируется на момент определения. Условное присваивание (?=) устанавливает переменную только в случае, если она еще не определена, что полезно для значений по умолчанию, которые могут быть перекрыты средой. Добавление к значению (+=) добавляет к существующему значению, сохраняя рекурсивный или простой характер оригинального значения. Присваивание в команде шелла (!=) выполняет правую часть как команду шелла и сохраняет результат, аналогично обратным кавычкам в шелле.
-
Какова разница между строкой рецепта и продолжительной строкой?
Строка рецепта — это отформатированная команда, выполняемая как часть действий правила; в стандартном make она должна начинаться с символа табуляции. Продолжительная строка — это любая строка, предшествующая которой заканчивалась обратным слешем, что логически соединяет две строки в одну. Продолжительные строки наследуют контекст предыдущей строки, поэтому продолженная строка рецепта остается рецептом, а продолженная переменная присваивается как переменная. Отступ продолжительной строки является чисто визуальным и не влияет на то, как make её парсит.
-
Почему нужны .PHONY цели и как они влияют на парсинг?
Декларация .PHONY сообщает make, что указанные имена не являются реальными файлами, а являются метками действий, поэтому make должен всегда выполнять их рецепты независимо от любого файла с таким же именем в рабочей директории. Без этого файл с именем clean автоматически отключает make clean, потому что make считает цель актуальной. .PHONY не меняет правила парсинга рецептов или отступов — строки рецептов под флагом .PHONY всё ещё должны начинаться с символа табуляции — но изменяет логику сравнения временных меток так, что рецепт считается устаревшим на каждом вызове.
Установите наши расширения
Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска
恵 Табло результатов прибыло!
Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!
Подписаться на новости
все Новые поступления
всеОбновлять: Наш последний инструмент было добавлено 4 мая 2026 года
