ExtUtils :: MakeMaker и поддерживаемые программы MAKE в Windows - PullRequest
2 голосов
/ 26 февраля 2012

Существуют различные программы MAKE для создания программного обеспечения, в частности (для целей данного поста) Microsoft NMake, GNU Make и DMake ("Make Dennis Vadura's").

При сборке модулей Perl через ExtUtils :: MakeMaker вы можете указать программу MAKE для использования через параметр MAKE.

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

Мне кажется, что в Windows GNU Make (которая находится в GnuWin32 и хорошо подходит для MinGW) не поддерживается или не тестируется; однако об этом нет упоминания в справочной странице EU :: MM .

Что заставляет меня верить, что Makefile для GNU Make, который генерирует EU :: MM, просто не работает. Он содержит DIRFILESEP = \ (сгенерированный из sub init_DIRFILESEP в MM_Win32.pm), но обратный слеш интерпретируется GNU Make как символ продолжения строки, поэтому он не может работать, так как генерирует неверные пути:

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

Если вы исправите это, тогда во временном пакетном файле будет другая ошибка (я наблюдал это с make -d), которая впоследствии удаляется:

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

Конечно, хорошо просто использовать NMake или DMake и не беспокоиться о поддержке GNU Make, но в этом случае в документации должно быть предупреждение, чтобы не использовать GNU Make в Windows. (Которая, я думаю, самая популярная программа Make).

Так в каком состоянии GNU Make поддерживает Windows от EU :: MM? Это глюк или по замыслу? Или я пропускаю ключ, чтобы заставить это работать? Что это?

1 Ответ

3 голосов
/ 26 февраля 2012

NMake и DMake - единственные поддерживаемые программы для сборки Perl в Windows . Так как EU :: MM по умолчанию использует тот же make, который использовался для сборки Perl, мало кто пытался использовать GNU Make с EU :: MM в Windows, и я сомневаюсь, что поддержка этого является высоким приоритетом для ЕС :: ММ сопровождающие.

Так что я бы сказал, что EU :: MM + GNU Make для Windows не поддерживается по дизайну. Но это скорее отсутствие уловок, чем преднамеренный отказ от GNU Make.

Если вы заинтересованы в добавлении поддержки, я ожидаю, что они примут запросы на извлечение. EU :: MM репо находится на GitHub.

...