Что такое формат файла MK?
Файл .mk - это фрагмент текстового сценария сборки, написанный с использованием синтаксиса make. В то время как основной файл сборки по традиции называется Makefile (без расширения), файлы .mk служат модульными под-makefile - частичными наборами правил, определениями переменных или блоками конфигурации для конкретных платформ, которые подключаются к родительской сборке с помощью директивы include утилиты make. К обоим типам файлов применяются одни и те же правила и синтаксис.
Правило makefile состоит из строки цели (target: dependencies), за которой следуют одна или несколько строк рецепта. Строки рецепта должны начинаться с символа табуляции (TAB), а не с пробелов - это известная причина сбоев сборки, вызывающая неясную ошибку missing separator. Присваивание переменных, правила шаблонов и условные директивы (ifeq, ifdef) - все это допустимо в файлах .mk.
GNU Make (Free Software Foundation, текущая версия 4.4.1, выпущена в 2023 году) является наиболее широко используемой реализацией. Microsoft NMAKE (поставляется с Visual Studio) и BSD make в целом совместимы. Расширение .MAK служит аналогичной цели и часто встречается в проектах для Windows, использующих NMAKE. Файлы .mk стали особенно заметны благодаря устаревшей системе сборки Android, которая активно полагалась на фрагменты Android.mk, прежде чем Google заменила её на Android.bp и систему Soong.
CMake, Ninja, Meson и Bazel стали альтернативами для крупных проектов, но GNU Make и фрагменты .mk остаются повсеместными в кодовых базах C/C++ с открытым исходным кодом, встроенных прошивках и ядре Linux.
Безопасность и защита
РИСК: MEDIUMФайл .mk является текстовым и сам по себе не может заразить компьютер, но он содержит команды оболочки, которые выполняются при запуске make. Запуск недоверенного файла .mk (например, из неизвестного источника) может привести к удалению файлов, загрузке вредоносного ПО или изменению системных настроек - такой же риск, как и при запуске любого недоверенного скрипта оболочки. Всегда проверяйте файл в текстовом редакторе перед запуском make.
Детали формата
в двух словахПрограммы, открывающие файлы MK
Технические подробности
глубокая спецификация| Тип формата | Текстовый фрагмент правил make (под-makefile / подключаемый сценарий сборки) |
| Кодировка | ASCII или UTF-8 |
| Порядок байтов | Н/Д (простой текст) |
| Контейнер | Простой текст |
| Критическое требование синтаксиса | Строки рецептов должны начинаться с символа TAB; пробелы вызывают ошибку «missing separator» |
| Механизм включения | Подключается в родительский Makefile через директиву «include» |
| Типичный размер файла | 1 КБ - 50 КБ |
| Реализации | GNU Make 4.4.1 (2023), BSD make, Microsoft NMAKE, POSIX make (IEEE 1003.1-2017) |
| Стандарт POSIX | IEEE 1003.1-2017 (спецификация POSIX make) |
| Известное использование | Устаревшая система сборки Android (Android.mk, использовалась до Soong/Android.bp) |
| Платформа | Linux, macOS, Windows (MSYS2, WSL, Cygwin, NMAKE), BSD, Unix |
| Выпущен | 1976 (Stuart Feldman, Bell Labs - original make); .mk convention ~1980s |
| Последняя версия | GNU Make 4.4.1 (2023) |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.gnu.org |
Конвертации MK
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах MK.