Wat is het MK-bestandsformaat?
Een .mk-bestand is een build-scriptfragment in platte tekst, geschreven in de make-syntaxis. Waar het hoofdbestand gewoonlijk Makefile wordt genoemd (zonder extensie), dienen .mk-bestanden als modulaire sub-makefiles - gedeeltelijke regelsets, variabelendefinities of platformspecifieke configuratieblokken - die in een bovenliggende build worden opgenomen via de include-richtlijn van make. Dezelfde regels en syntaxis zijn op beide van toepassing.
Een makefile-regel bestaat uit een doellijn (target: dependencies) gevolgd door een of meer receptlijnen. Receptlijnen moeten beginnen met een letterlijk TAB-teken, niet met spaties - een beruchte bron van build-fouten die een cryptische missing separator-fout produceren. Variabele-toewijzingen, patroonregels en voorwaardelijke richtlijnen (ifeq, ifdef) zijn allemaal geldig in .mk-bestanden.
GNU Make (Free Software Foundation, momenteel versie 4.4.1 uitgebracht in 2023) is de meest gebruikte implementatie. Microsofts NMAKE (gebundeld met Visual Studio) en BSD make zijn grotendeels compatibel. De .MAK-extensie dient een vergelijkbaar doel en is gebruikelijk in op Windows gerichte projecten die NMAKE gebruiken. .mk-bestanden werden vooral prominent door het legacy build-systeem van Android, dat uitgebreid vertrouwde op Android.mk-fragmenten voordat Google dit verving door Android.bp en het Soong-systeem.
CMake, Ninja, Meson en Bazel zijn naar voren gekomen als alternatieven voor grote projecten, maar GNU Make en .mk-fragmenten blijven alomtegenwoordig in open-source C/C++-codebases, embedded firmware en de Linux-kernel.
Beveiliging & veiligheid
RISICO: MEDIUMEen .mk-bestand is platte tekst en kan een machine niet uit zichzelf infecteren, maar het bevat shell-opdrachten die worden uitgevoerd wanneer make het uitvoert. Het uitvoeren van een niet-vertrouwd .mk-bestand (bijv. van een onbekende bron) kan bestanden verwijderen, malware downloaden of systeeminstellingen wijzigen - hetzelfde risico als bij het uitvoeren van een niet-vertrouwd shell-script. Inspecteer het bestand altijd in een tekstverwerker voordat u make uitvoert.
Formaatdetails
in een notendopProgramma's die MK-bestanden openen
Technische details
diepe specificaties| Formaattype | Make-regelfragment in platte tekst (sub-makefile / ingesloten build-script) |
| Codering | ASCII of UTF-8 |
| Bytevolgorde | N.v.t. (platte tekst) |
| Container | Platte tekst |
| Kritieke syntaxisvereiste | Receptlijnen moeten beginnen met een letterlijk TAB-teken; spaties veroorzaken een „missing separator”-fout |
| Insluitingsmechanisme | Opgenomen in een bovenliggende Makefile via de „include”-richtlijn |
| Typische bestandsgrootte | 1 KB - 50 KB |
| Implementaties | GNU Make 4.4.1 (2023), BSD make, Microsoft NMAKE, POSIX make (IEEE 1003.1-2017) |
| POSIX-standaard | IEEE 1003.1-2017 (POSIX make-specificatie) |
| Opmerkelijk gebruik | Android legacy build-systeem (Android.mk, gebruikt vóór Soong/Android.bp) |
| Platform | Linux, macOS, Windows (MSYS2, WSL, Cygwin, NMAKE), BSD, Unix |
| Uitgebracht | 1976 (Stuart Feldman, Bell Labs - original make); .mk convention ~1980s |
| Laatste versie | GNU Make 4.4.1 (2023) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.gnu.org |
MK conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over MK-bestanden.