perl - ExtUtils :: MakeMaker og understøttet MAKE programmer på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Der er forskellige MAKE programmer til at bygge software, især (med henblik på denne post) Microsoft NMake, GNU Make og DMake ('Dennis Vadura's Make').


Når du bygger Perl-moduler via ExtUtils :: MakeMaker, kan du angive MAKE-programmet, der skal bruges via parameteren MAKE.


perl Makefile.PL MAKE=nmake
perl Makefile.PL MAKE=dmake
perl Makefile.PL MAKE=make


Det forekommer mig, at på Windows, GNU Make (som er i GnuWin32, og er en god pasform med MinGW) ikke understøttes eller ikke testes; Der er dog ingen omtale af dette i EU :: MM manpage. [9] [10]


Hvad der får mig til at tro på dette er, at Makefile for GNU Gør at EU :: MM genererer simpelthen ikke virker. Den indeholder DIRFILESEP = (genereret fra sub init\_DIRFILESEP i MM\_Win32.pm), men backslash tolkes som line continuation karakter af GNU Make, så det kan ikke fungere som det genererer dårlige stinavn:


make: *** No rule to make target `C:OptPerl514.64libConfig.pm',
  needed by `makefile'.  Stop.


Hvis du løser dette, så er der en anden fejl i en midlertidig batchfil (jeg observerede dette med make -d), som derefter slettes:


syntax error at -e line 1, near "'755')
"
Missing right curly or square bracket at -e line 1, at end of line


Det er selvfølgelig fint at bare bruge NMake eller DMake og ikke gider med støtte til GNU Make, men i så fald bør der være en advarsel i dokumenterne om ikke at bruge GNU Make på Windows. (Det er, tror jeg, det mest populære Make-program.)


Så hvad er GNU-tilstanden Opret support på Windows af EU :: MM? Er dette en fejl eller ved design? Eller mangler jeg tanken om at få det til at fungere? Hvad er det?

Bedste reference


NMake og DMake er de eneste understøttede programmer til at opbygge Perl på Windows. Siden EU :: MM standard til den samme make, der blev brugt til at opbygge Perl, har få mennesker forsøgt at bruge GNU Make med EU :: MM på Windows, og jeg tvivler på at støtte, der er højt prioriteret for EU :: MM vedligeholdere. [11]


Så jeg siger EU :: MM + GNU Make on Windows understøttes ikke af design. Men det er mere mangel på tingene end en bevidst afvisning af GNU Make.


Hvis du er interesseret i at tilføje support til det, forventer jeg, at de accepterer anmodninger om træk. EU :: MM repo er på GitHub. [12]