【问题标题】:ExtUtils::MakeMaker and supported MAKE programs on WindowsExtUtils::MakeMaker 和 Windows 上支持的 MAKE 程序
【发布时间】:2012-03-16 07:58:29
【问题描述】:

有多种 MAKE 程序可用于构建软件,特别是(就本文而言)Microsoft NMake、GNU Make 和 DMake(“Dennis Vadura 的 Make”)。

通过 ExtUtils::MakeMaker 构建 Perl 模块时,您可以通过 MAKE 参数指定要使用的 MAKE 程序。

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

在我看来,在 Windows 上,GNU Make(位于 GnuWin32 中,非常适合 MinGW)不受支持或未经测试;但是,EU::MM manpage 中没有提到这一点。

让我相信 EU::MM 生成的 GNU Make 的 Makefile 根本不起作用。它包含DIRFILESEP = \(从MM_Win32.pm 中的sub init_DIRFILESEP 生成),但反斜杠被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 的支持而烦恼,但在这种情况下,文档中应该有警告不要在 Windows 上使用 GNU Make。 (我认为这是最受欢迎的 Make 程序。)

那么 EU::MM 对 Windows 的 GNU Make 支持情况如何?这是一个小故障还是设计使然?还是我错过了让它发挥作用的线索?这是什么?

【问题讨论】:

    标签: windows perl makefile perl-module


    【解决方案1】:

    NMake 和 DMake 是 build Perl on Windows 唯一支持的程序。由于 EU::MM 默认使用与构建 Perl 相同的 make,因此很少有人尝试在 Windows 上将 GNU Make 与 EU::MM 一起使用,我怀疑支持这一点对于 EU:: MM 维护者。

    所以我会说 Windows 上的 EU::MM + GNU Make 在设计上是不受支持的。但这与其说是故意拒绝 GNU Make,不如说是缺乏学习。

    如果您有兴趣添加对它的支持,我希望他们会接受拉取请求。 EU::MM repo 在 GitHub 上。

    【讨论】:

    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2010-10-12
    • 2012-08-23
    相关资源
    最近更新 更多