【问题标题】:Comparison of make and nmake for perl module installationperl 模块安装的 make 和 nmake 比较
【发布时间】:2012-03-21 06:25:06
【问题描述】:

与 Windows 和 linux/Unix 操作系统相比,模块安装有所不同。

在Win32中我们需要使用一个叫做nmake的程序,然后我们跟着

 1. C:\> perl Makefile.PL 
 2. C:\> nmake
 3. C:\> nmake test
 4. C:\> nmake install

在 Linux 中我们遵循

 1. $ perl Makefile.PL
 2. $ make
 3. $ make test
 4. $ make install

两种操作系统的安装过程相同,唯一的区别在于使用的关键字 ma​​kenmake。谁能告诉我字母 n 代表什么以及它在 windows 中的规范是什么。

【问题讨论】:

  • 您使用 nmake、make 还是 dmake 取决于设置,即使在 Windows 中也是如此。 Strawberry Perl 的默认工具链包括 dmake。 nmake 通常包含在 ActiveState 发行版的工具链中,并且在 cygwin 下,我怀疑你会有“make”(尽管我没有使用 cygwin 来确认)。 ExtUtils::MakeMaker 通常会创建一个生成文件,该文件将适合常见的“make”实现的最小公分母,所以除非你真的很喜欢,否则你不必担心,除了担心用户是否真的有一些版本的make。
  • @DavidO,Cygwin 是一个 unix 仿真层,所以称它为 Windows 就像说 WINE 是 linux。 cygwin 提供 GNU 工具,所以它使用 GNU 的 make
  • :) 我喜欢这个比喻,@ikegami。你是对的,当然。我只是为了避免平台实施方式的不确定性。

标签: windows linux perl makefile nmake


【解决方案1】:

来自Wikipedia

Microsoft nmake,通常在 Windows 上可用。这是相当基本的 它仅提供其他两个版本的功能的子集 Make(BSD 和 GNU)。不要与微软的 nmake 混淆 来自 AT&T 和贝尔实验室的 Unix 的 nmake。

Microsoft nmake 详细 here 和 GNU make 详细 here

【讨论】:

    【解决方案2】:

    其实在windows和linux上,模块安装通常是这样进行的:

    cpan Module::Name
    

    关于你的问题。

    Perl 期望用于构建模块的编译器套件与用于构建 Perl 的编译器套件相同。

    Windows 上有两个主要的工具链。有一个微软提供的,还有一个 GNU 的移植版。

    • 微软提供的make工具名为nmake
    • GNU工具的MinGW端口提供的make工具命名为dmake

    所以,

    • 如果您的 Perl 是使用 MS 的工具构建的(例如 Windows 构建的 Perl by ActiveState),您需要使用nmake
    • 如果您的 Perl 是使用 GNU 的工具构建的(例如,Strawberry 构建的 Perl),您需要使用 dmake

    这让我们回到cpan Module::Name

    cpan 会询问 Perl 使用了哪些工具来构建它,并使用这些工具。

    通常。在 Windows 上并非如此。 cpan 在 Windows 上实际上要灵活得多。 cpan 将首先查看用于构建 Perl 的工具链。如果没有找到,cpan 为您安装 GNU 工具链并暂时欺骗perl 使其相信它是使用 GNU 的工具链构建的。

    这意味着你运行cpan Module::Name 它应该可以在ActivePerl 上运行。 (还有ppm install Module::Name,虽然我会先运行ppm,不带任何参数来添加存储库(例如贿赂))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多