Hvad er MK-filformatet?
En .mk-fil er et build-script-fragment i almindelig tekst skrevet i make-syntaks. Hvor hoved-build-filen konventionelt hedder Makefile (uden filendelse), fungerer .mk-filer som modulære sub-makefiles - delvise regelsæt, variabeldefinitioner eller platformsspecifikke konfigurationsblokke - der trækkes ind i et overordnet build via make's include-direktiv. De samme regler og syntaks gælder for begge.
En makefile-regel består af en mållinje (target: dependencies) efterfulgt af en eller flere opskriftslinjer (recipes). Opskriftslinjer skal begynde med et bogstaveligt TAB-tegn, ikke mellemrum - en berygtet kilde til build-fejl, der producerer en kryptisk missing separator-fejl. Variabeltildelinger, mønsterregler og betingede direktiver (ifeq, ifdef) er alle gyldige i .mk-filer.
GNU Make (Free Software Foundation, i øjeblikket version 4.4.1 udgivet 2023) er den mest anvendte implementering. Microsoft's NMAKE (bundtet med Visual Studio) og BSD make er bredt kompatible. .MAK-filendelsen tjener et lignende formål og er almindelig i Windows-orienterede projekter, der bruger NMAKE. .mk-filer blev især fremtrædende gennem Android's ældre build-system, som i vid udstrækning stolede på Android.mk-fragmenter, før Google erstattede det med Android.bp og Soong-systemet.
CMake, Ninja, Meson og Bazel er opstået som alternativer til store projekter, men GNU Make og .mk-fragmenter forbliver overalt i open source C/C++-kodebaser, indlejret firmware og Linux-kernen.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .mk-fil er almindelig tekst og kan ikke inficere en maskine i sig selv, men den indeholder shell-kommandoer, der eksekveres, når make kører den. At køre en upålidelig .mk-fil (f.eks. fra en ukendt kilde) kan slette filer, downloade malware eller ændre systemindstillinger - samme risiko som at køre et hvilket som helst upålideligt shell-script. Undersøg altid filen i en teksteditor, før du kører make.
Formatdetaljer
kort fortaltProgrammer der åbner MK-filer
Tekniske detaljer
dyb specifikation| Format-type | Make-regelfragment i almindelig tekst (sub-makefile / inkluderet build-script) |
| Kodning | ASCII eller UTF-8 |
| Byte-orden | N/A (almindelig tekst) |
| Container | Almindelig tekst |
| Kritisk syntakskrav | Opskriftslinjer skal starte med et bogstaveligt TAB-tegn; mellemrum forårsager en «missing separator»-fejl |
| Inkluderingsmekanisme | Trækkes ind i en overordnet Makefile via «include»-direktivet |
| Typisk filstørrelse | 1 KB - 50 KB |
| Implementeringer | GNU Make 4.4.1 (2023), BSD make, Microsoft NMAKE, POSIX make (IEEE 1003.1-2017) |
| POSIX-standard | IEEE 1003.1-2017 (POSIX make-specifikation) |
| Bemærkelsesværdig brug | Android legacy build-system (Android.mk, brugt før Soong/Android.bp) |
| Platform | Linux, macOS, Windows (MSYS2, WSL, Cygwin, NMAKE), BSD, Unix |
| Udgivet | 1976 (Stuart Feldman, Bell Labs - original make); .mk convention ~1980s |
| Seneste version | GNU Make 4.4.1 (2023) |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.gnu.org |
MK-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om MK-filer.