您正在从Perl 5.20.0查看此文档的版本。查看最新版本

目录

名称

Module::Build-构建并安装Perl模块

简介

构建和安装模块的标准流程:

perl内部版本。损益./内部版本./构建测试./Build安装

或者,如果您所在的平台(如DOS或Windows)不需要“./”符号,您可以这样做:

perl内部版本。损益生成生成测试生成-安装

描述

模块::生成是用于构建、测试和安装Perl模块的系统。它旨在成为外部工具::MakeMaker。与使用MakeMaker公司。它也不需要制作在您的系统上-大多数模块::生成代码是pure-perl的,并且是以跨平台的方式编写的。

请参见“动机”更多比较外部工具::MakeMaker模块::生成.

要安装模块::生成,以及使用的任何其他模块模块::生成对于其安装过程,请执行以下操作:

perl构建。PL#“构建”。PL脚本创建“构建”脚本./Build#需要。/确保我们使用这个“构建”脚本./Build test#而不是恰好位于PATH中的另一个测试./Build安装

这说明了初始配置和三个“操作”的运行。在这种情况下,运行的操作是“build”(默认操作)、“test”和“install”。迄今为止定义的其他操作包括:

生成清单清除manifest_skip代码手册页配置数据助理差异ppd分布式ppmdistdistcheck预请求数据distclean预请求报告distdir pure_install蒸馏装置realclean离散复测设计滑雪检查距离测试docs测试fakeinstall测试盖帮助testdbhtml测试pod安装testpodcoverageinstalldeps版本安装

您可以运行“help”操作以获得完整的操作列表。

文件编制指南

以下文件模块::生成分为几个部分:

一般用法(模块::生成)

这是您当前正在阅读的文档。它描述了基本用法和背景信息。它的主要目的是帮助想要学习如何调用和控制的用户模块::生成命令行中的脚本。

创作参考(模块::Build::创作)

本文件描述了模块::生成以及写作作者所需的相关概念生成。损益分发或控制的脚本模块::生成以编程方式处理。

API参考(模块::内部版本::API)

这是对模块::生成应用程序编程接口。

食谱(模块::构建::食谱)

本文档演示了如何完成许多常见任务。它涵盖了一般命令行用法和创作生成。损益脚本。包括工作示例。

行动

这里有一些通用原则。首先,构建模块时的每个任务都被称为“动作”。以上列出了这些措施;它们对应于构建、测试、安装、打包等任务。

其次,论点是以一种非常系统的方式处理的。参数总是键=值对。可在以下位置指定perl内部版本。损益时间(即。perl内部版本。PL destdir=/my/secret/place),在这种情况下,它们的值将在生成脚本。在执行特定操作(即。生成测试详细信息=1),在这种情况下,它们的值仅在该命令的生存期内有效。操作命令行参数优先于在中指定的参数perl内部版本。损益时间。

构建过程还严重依赖于配置.pm模块。如果用户希望覆盖配置.pm,她可以这样指定:

perl内部版本。PL--配置cc=gcc--配置ld=gcc

默认情况下提供以下生成操作。

建造

[版本0.01]

如果您运行生成脚本没有任何参数,它运行建造动作,它反过来运行代码文档行动。

这类似于MakeMaker公司 制造所有目标。

清洁的

[版本0.01]

此操作将清除生成过程可能创建的所有文件,包括气泡/目录(但不包括_建造/目录和生成脚本本身)。

代码

[版本0.20]

此操作将构建代码库。

默认情况下,它只创建一个光点/目录并复制任何下午点.吊舱来自您的图书馆/目录中的气泡/目录。它还编译任何.xs文件文件来自图书馆/然后把它们放进去气泡/当然,您需要一个可以正常工作的C编译器(可能与构建perl本身的编译器相同)才能使编译正常工作。

这个代码操作还运行任何.PL中的文件图书馆/目录。通常,这些文件会创建其他文件,命名相同,但没有.损益结束。例如,一个文件图书馆/Foo/Bar.pm.PL可以创建文件lib/Foo/Bar.pm(库/Foo/Bar). The.损益首先处理文件,因此下午点文件(或我们处理的其他类型)将被正确复制。

配置数据

[版本0.26]

...

差异

[版本0.14]

此操作将比较即将安装的文件及其已安装的对应文件。对于.pm和.pod文件,将显示一个diff(目前需要在PATH中有一个“diff”程序)。对于其他文件,如编译的二进制文件,我们只报告它们是否不同。

A类旗帜参数可以传递给动作,动作将传递给diff程序。请参阅您的“diff”文档以了解它将接受的参数-一个好的参数是-单位:

./Build diff标志=-u
距离

[版本0.02]

此操作对于那些希望通过CPAN等介质打包模块进行源代码分发的模块作者很有帮助。它将创建中列出的文件的tarball显示并使用GZIP压缩压缩tarball。

默认情况下,此操作将使用存档::Tar模块。然而,您可以通过提供显式的焦油(和可选gzip公司)参数:

./Build dist--tar C:\to\tar.exe--gzip C:\to\zip.exe
分发检查

[版本0.05]

报告哪些文件位于生成目录中,但不在显示文件,反之亦然。(请参见显示详细信息。)

分布式清理

[版本0.05]

执行“realclean”操作,然后执行“distcheck”操作。

发行目录

[版本0.05]

创建名为$dist_name-$dist_version(如果该目录已经存在,则首先将其删除),然后复制显示文件到该目录。此目录是从中创建分发tarball的目录。

蒸馏装置

[版本0.37]

执行“distdir”操作,然后切换到该目录并运行perl内部版本。损益,然后是该目录中的“build”和“install”操作。使用PERL_MB_OPT或.模块构建设置应在子流程期间应用的选项

分布式元数据

[版本0.21]

创建META.yml公司描述分发的文件。

金属yml是包含各种位的文件元数据关于分布。元数据包括分发名称、版本、摘要、先决条件、许可证以及有关分发的各种其他数据。此文件创建为META.yml公司以简化的YAML格式。

META.yml公司文件也必须列在显示-否则,将发出警告。

的当前版本META.yml公司CPAN上的规范如下CPAN::元::规范.

分配

[版本0.16]

使用模块::签名为您的分发创建SIGNATURE文件,并将SIGNATURE文件添加到分发的MANIFEST中。

距离测试

[版本0.05]

执行“distdir”操作,然后切换到该目录并运行perl内部版本。损益,然后是该目录中的“build”和“test”操作。使用PERL_MB_OPT或.模块构建设置应在子流程期间应用的选项

文档

[版本0.20]

这将为以下任何可安装项目生成文档(例如Unix手册页和HTML文档)气泡/包含POD的。如果没有宾多克图书馆文献定义的安装目标(如不支持Unix手册页的系统上的情况)不会对手册页执行任何操作。如果没有二进制htmllibhtml文件已定义安装目标—不对HTML文档执行任何操作。

假装失速

[版本0.02]

这就像安装行动,但它实际上什么也不会做,它只会报告它做了什么如果你真的运行了安装行动。

帮助

[版本0.03]

此操作只需打印出一条消息,该消息旨在帮助您使用构建过程。它还将向您显示可用构建操作的列表。

使用可选参数指定操作名称(例如。生成帮助测试),“help”操作将向您显示可以为该操作找到的任何POD文档。

html格式

[版本0.26]

这将为以下任何二进制或库文件生成HTML文档光点/包含POD的。只有在可以根据中的值确定安装路径时,才会安装HTML文档配置.pm。您还可以通过指定安装路径(_P)的值二进制html和/或libhtml文件安装目标。

带有可选html_链接参数设置为false值时,可以跳过搜索要链接到的其他文档,因为如果无论如何都没有要生成的链接,那么这可能会浪费大量时间:

./Build html--html_links 0
安装

[版本0.01]

此操作将使用ExtUtils::安装从安装文件气泡/进入系统。请参见“安装路径”有关Module::Build如何确定安装位置以及如何影响此过程的详细信息。

如果您希望在中查看安装过程@INC公司对于正在安装并尝试删除的其他版本的内容,可以使用未列入名单的参数,它告诉ExtUtils::安装为此:

./Build安装uninst=1

这可能是一个好主意,因为它有助于防止一个模块的多个版本出现在您的系统上,这确实是一种令人困惑的情况。

安装程序

[版本0.36]

此操作将使用cpan_客户端参数作为命令来安装缺少的先决条件。系统将提示您是否安装可选依赖项。

这个cpan_客户端选项默认为“cpan”,但可以设置为选项或.modulebuildrc模块。它必须是一个shell命令,以模块列表作为参数进行安装(例如,CPANPLUS的“cpanp-i”)。如果程序部分是相对路径(例如“cpan”或“cpanp”),那么它将相对于执行Build的perl程序进行定位。波兰。

/opt/perl/5.8.9/bin/perl构建。损益./Build installdeps--cpan_client“cpanp-i”#安装至5.8.9
显示

[版本0.05]

这是一个供模块作者使用的操作,而不是供模块安装人员使用的操作。它将带来显示分发中当前存在的文件的最新信息。您可以使用显示。跳过文件以从中排除某些文件或目录显示.显示。跳过应该包含一组正则表达式,每行一个。如果分发目录中的文件与任何正则表达式匹配,则它不会包含在显示.

以下是合理的显示。跳过首先,您可以添加自己的内容:

^_建造^生成$^气泡~$\.bak文件$^制造商。跳过$并行版本系统

请参阅分发检查跳过检查如果您想了解显示行动就行了,实际上什么都不做。

声明跳过

[版本0.3608]

这是一个供模块作者使用的操作,而不是供模块安装人员使用的操作。它将生成样板MANIFEST。如果文件不存在,请跳过该文件。

手册页

[版本0.28]

这将为下的任何二进制或库文件生成手册页气泡/包含POD的。只有在可以从中的值确定安装路径时,才会安装手册页配置.pm。还可以通过在命令行上使用宾多克图书馆文献安装目标。

赦免者

[版本0.2806]

生成用于的PAR二进制分布标准PAR::距离.

它要求您的系统上安装PAR::Dist模块(0.17及更高版本)。

第页

[版本0.20]

为您的发行版构建PPD文件。

此操作采用可选参数代码库它在生成的PPD文件中用于指定分发的(通常是相对的)URL。默认情况下,此值是没有任何路径信息的分发名称。

例子:

./Build ppd—代码库“MSWin32-x86-多线程/Module-Build-0.21.tar.gz”
ppm列表

[版本0.23]

生成PPM二进制分发和PPD描述文件。此操作还调用购买力平价操作,因此它可以接受相同的代码库在该行动中描述的论点。

这使用与距离对其输出进行tar和zip操作,以便您可以提供焦油和/或gzip公司影响结果的参数。

预需求数据

[版本0.32]

此操作打印出所有先决条件和所需版本的Perl数据结构。可以使用再次加载输出评估()。这对于希望查询Build脚本以获取先决条件的外部工具很有用。

请求前报告

[版本0.28]

此操作打印出所有先决条件、所需版本和实际安装的版本的列表。这对于在构建之前检查系统配置或编译数据以发送错误报告时非常有用。

pure_安装

[版本0.28]

此操作与安装行动。但在未来安装开始写入文件$(INSTALLARCHLIB)/perllocal.pod,pure_安装不会,这是他们之间唯一的区别。

真正的清洁

[版本0.01]

此操作与清洁的操作,但也删除_建造目录和生成脚本。如果您运行真正清洁操作,您实际上是在重新开始,因此您必须重新创建生成再次编写脚本。

重新测试

[版本0.2806]

这就像测试操作,但实际上并不首先构建发行版,也不添加气泡/加载路径,因此将根据以前发行版的已安装版本。这可以用于验证某个已安装的发行版是否仍然有效,或者查看发行版的新版本是否仍然通过旧的回归测试,等等。

跳过检查

[版本0.05]

报告由于中的条目而跳过的文件显示。跳过文件(请参见显示详细信息)

测试

[版本0.01]

这将使用测试::线束TAP::线束运行任何回归测试并报告其结果。可以在标准位置定义测试:一个名为测试.pl在顶级目录中,或以结尾的多个文件.t英寸在一个t吨/目录。

如果您希望测试“详细”,即显示测试执行的详细信息而不仅仅是摘要信息,请传递参数详细=1.

如果要在perl调试器下运行测试,请传递参数调试器=1.

如果要让Module::Build查找具有不同文件扩展名的测试文件,请传递测试文件文本具有扩展数组的参数,例如[qw(.t.s.z)].

如果要由运行测试TAP::线束,而不是测试::线束,传递参数分接头_线束_ args作为参数的数组引用传递给TAP::Harness构造函数。

此外,如果文件调用可视.pl存在于顶级目录中,则此文件将作为Perl脚本执行,其输出将显示给用户。这是进行速度测试或其他不使用测试::线束输出格式。

要覆盖要运行的测试的选择,可以通过测试文件(_F)参数,其值是要运行的测试脚本的以空格分隔的列表。当您只想运行一个测试来查看是否已经消除了某个错误时,这在开发中尤其有用:

./Build test--测试文件t/something_failing。t吨

你也可以通过几个测试文件(_F)单独的参数:

./Build test--test_files t/one.t--测试文件t/two。t吨

或使用地球仪()-样式图案:

./构建测试--测试文件“t/01-*.t”
贝塞尔

[版本0.2807]

[注:“testall”操作和下面的代码片段当前处于alpha阶段,请参阅“http://www.nntp.perl.org/group/perl.module.build/2007/03/msg584.html”“中的”“]

运行测试操作加上每个测试$类型由键定义的操作测试类型参数。

目前,您需要自己定义ACTION_test$type方法,并在test_types参数中枚举它们。

my$mb=模块::Build->子类(代码=>q(sub ACTION_testspecial{shift->generic_test(type=>“special”);}sub ACTION_testauthor{shift->generic_test(type=>'author');}))->新的(...测试类型=>{特殊=>'.st',author=>['.at','.pt'],},...
测试盖

[版本0.26]

运行测试操作使用Devel::封面,生成代码平均值报告,显示测试期间实际执行了代码的哪些部分。

将选项传递给Devel::封面,设置$开发_覆盖_选项环境变量:

DEVEL_COVER_OPTIONS=忽略,生成/构建测试封面
测试数据库

[版本0.05]

这是“test”操作的同义词调试器=1参数。

测试舱

[版本0.25]

这将检查文档行动和生产测试::线束-样式输出。如果您是模块作者,则在创建新版本之前运行此命令很有用。

测试舱覆盖率

[版本0.28]

这将检查分布的吊舱覆盖范围并生成测试::线束-样式输出。如果您是模块作者,则在创建新版本之前运行此命令很有用。

版本安装

[版本0.16]

**注:自仅限下午是一个非常新的功能,因为我们最近也在这里添加了对它的支持,所以这个功能被认为是实验性的**

如果你有仅.pm模块,则可以使用此操作将模块安装到特定于版本的库树中。这意味着您可以安装同一模块的多个版本,并使用具体如下:

仅使用MyModule=>0.55;

覆盖中的默认安装库仅::config,指定版本库参数时运行生成。损益脚本:

perl内部版本。PL—版本库/my/version/place/

要覆盖模块的安装版本,请指定版本参数时运行生成。损益脚本:

perl内部版本。PL--版本0.50

请参阅仅限下午文档以获取有关特定版本安装的更多信息。

选项

命令行选项

在调用生成。损益或生成脚本。有关特定于操作的其他选项的信息,请参阅相应操作的文档。

注意:有一些初步的选项支持,可以使用更熟悉的长选项样式。大多数选项前面可以加上--长选项前缀,下划线更改为破折号(例如。--use-rc文件). 此外,布尔选项的参数是可选的,布尔选项可以通过在其前面加上前缀来求反没有-(例如。--中篇小说--无病毒).

安静的

抑制输出中的信息性消息。

冗长的

显示有关生成输出的额外信息。冗长的将关闭安静的

cpan_客户端

设置cpan_客户端命令用于安装程序行动。请参见安装程序了解更多详细信息。

使用_文件

加载~/.模块构建选项文件。可以将此选项设置为false,以防止加载自定义资源文件。

allow_mb_mismatch(允许_mb_不匹配)

禁止在启动时检查我们现在运行的Module::Build版本是否与构建分发时最初调用的版本相同(即生成。损益脚本是首次运行的)。从0.3601开始,不匹配将导致警告而不是致命错误,因此此选项实际上只会抑制警告。

调试

将模块::生成调试信息打印到STDOUT,例如已执行的生成操作的跟踪。

默认选项文件(.模块构建)

[版本0.28]

当Module::Build启动时,它将首先查找文件,$ENV{HOME}/.modulebuildrc。如果在那里找不到,它将在.模块构建环境变量引用的目录中的文件家庭驱动+HOMEDIR公司,用户档案,APPDATA公司,WINDIR公司,系统$登录。如果文件存在,则其中指定的选项将用作默认值,就像在命令行中键入的一样。可以通过在命令行上指定新值来覆盖默认值。

操作名必须位于行的开头,后跟任意数量的空白,然后是选项。选项与命令行上的选项相同。只要在每一行的开头有空格,就可以用任意数量的空格(包括换行符)来分隔它们。哈希标记之后的任何内容(#)被视为注释,并在解析之前被剥离。如果多行以相同的操作名称开头,则这些行将合并为一组选项。

除了常规操作外,还有两种特殊的伪操作:密钥*(星号)表示应应用于所有操作的任何全局选项,键“Build_PL”指定调用时要应用的选项perl内部版本。损益.

*verbose=1#全局选项差异标志=-u安装--install_base/home/ken--安装路径html=/home/ken/docs/htmlinstalldeps--cpan_client“cpanp-i”

如果希望将资源文件定位在其他位置,可以设置环境变量模块构建DRC到包含选项的文件的完整绝对路径。

环境变量

模块构建DRC

[版本0.28]

如上所述,指定默认选项文件的备用位置。

性能_MB_OPT

[版本0.36]

应用于生成的命令行选项。PL或任何构建操作。字符串将按shell的方式进行拆分(例如空格),结果将预先添加到任何实际的命令行参数中。

安装路径

[版本0.19]

调用Module::Build时建造行动,它需要找出在哪里安装东西。简而言之,默认安装位置是根据配置.pm,可以使用安装路径(_P)参数。安装基础(_B)参数允许您指定替代安装根,如/主页/foo、和目标目录允许您指定一个临时安装目录,如/tmp/安装如果您想创建捆绑安装包。

在本机中,Module::Build为以下类型的可安装项提供默认安装位置:

图书馆

通常pure-Perl模块文件以下午点.

“体系结构相关”模块文件,通常通过编译XS生成,内联,或类似代码。

脚本

用纯Perl编写的程序。为了提高重用性,尽可能地将这些代码缩小——尽可能地将代码放入模块中。

箱子

“架构相关”的可执行程序,即编译的C代码或其他代码。在perl发行版中很少看到这种情况,但这种情况确实发生了。

宾多克

中的内容文档脚本箱子。通常由这些文件中的POD生成。在Unix下,这些是属于“man1”类别的手册页。

图书馆文献

中的内容文档图书馆。这通常由中的POD生成下午点文件夹。在Unix下,这些是属于“man3”类别的手册页。

二进制html

这与结合蛋白但适用于HTML文档。

libhtml文件

这与图书馆文献但适用于HTML文档。

其他四个参数用于控制如何确定安装路径的各个方面:

安装目录

这些可安装内容的默认目的地来自系统中的条目配置.pm。通过设置安装目录参数如下:

“installdirs”设置为:核心站点供应商使用Config.pm中的以下默认值:lib=>installprivlib installsitelib install vendorlibarch=>installarchlib installsitearch installvendorarchscript=>installscript installsitescript installvendorscriptbin=>installbin安装站点bin安装供应商binbindoc=>installman1dir installsiteman1dir-installvendorman1dirlibdoc=>installman3dir安装站点man3dir安装供应商dorman3dirbinhtml=>installhtml1dir installsitehtml1dir installvendorhtml1dir[*]libhtml=>installhtml3dir installsitehtml3dir installvendorhtml3dir[*]*在某些操作系统(例如MSWin32)下,HTML文档的目的地是由C<Config.pm>条目C<installhtmldir>决定。

的默认值安装目录是“站点”。如果您正在创建模块包的供应商分发版,您可能希望执行以下操作:

perl内部版本。PL—安装目录供应商

./Build安装--安装目录供应商

如果您正在安装perl本身包含的模块的更新版本(即“核心模块”),则可以设置安装目录到“核心”以覆盖当前位置的模块。

(请注意,“script”行不同于MakeMaker公司-不幸的是,中没有“installsitescript”或“installvendorscript”条目配置.pm,所以我们使用“installsitebin”和“installvendorbin”条目来至少获得正确的一般位置。在未来,如果配置.pm添加一些更合适的条目,我们将开始使用这些条目。)

安装路径(_P)

设置默认值后,可以覆盖它们。

在命令行上,显示如下:

perl内部版本。PL—安装路径lib=/foo/lib—安装通道arch=/fo/lib/arch

或者这样:

./Build安装--安装路径lib=/foo/lib--安装路径arch=/foo/lib/arch
安装基础(_B)

您还可以通过提供安装基础(_B)参数指向系统上的目录。例如,如果您设置安装基础(_B)在Linux系统上,将安装到“/home/ken”,如下所示:

lib=>/home/ken/lib/perl5arch=>/home/ken/lib/perl5/i386-linux脚本=>/home/ken/binbin=>/home/ken/binbindoc=>/home/ken/man/man1libdoc=>/home/ken/man/man3binhtml=>/home/ken/htmllibhtml=>/home/ken/html

请注意,这是不同的从如何MakeMaker公司前缀参数有效。安装基础(_B)只在指定的目录下提供默认布局,这可能与installdirs=站点布局。

您指定的目录下的确切布局可能因系统而异-我们尝试在每个平台上执行“合理”的操作。

目标目录

如果您想先将所有内容安装到临时目录中(例如,如果您想创建一个包管理器喜欢的目录树每分钟转数dpkg(千磅/千克)可以从中创建包),可以使用目标目录参数:

perl内部版本。PL—目标目录/tmp/foo

./Build安装--目标目录/tmp/foo

这将有效地安装到“/tmp/foo/$sitelib”、“/tmp/foo/$sitearch”等,但它将使用文件::规范以使路径名在您安装的任何平台上正确工作。

前缀

提供用于与兼容外部工具::MakeMaker的PREFIX参数。前缀当您希望Module::Build在同一位置安装模块、文档和脚本时,应使用外部工具::MakeMaker的PREFIX机制。

以下是等效的。

perl内部版本。PL—前缀/tmp/fooperl生成文件。PL前缀=/tmp/foo

由于预诱导逻辑的复杂性,PREFIX在MakeMaker公司随着时间的推移发生了微妙的变化。模块::Build的--前缀逻辑等效于中的prefix逻辑外部工具::MakeMaker6.30.

的维护人员MakeMaker公司了解PREFIX机制的问题,并在6.31版本中添加了INSTALL_BASE支持MakeMaker公司2006年发布。

如果不需要保留与旧版本(6.31之前)的兼容性外部工具::MakeMaker或者正在启动我们建议您使用的全新Perl安装安装基础(_B)相反(和安装_底座在里面外部工具::MakeMaker). 请参见在Module::Build::Cookbook中的“安装位置与ExtUtils::MakeMaker相同”了解更多信息。

动机

我想重新开始有几个原因,而不仅仅是解决我不喜欢的地方MakeMaker公司:

待办事项

当前依靠时间戳来确定派生文件是否过期的方法不太可能扩展得很好,因为它需要向后跟踪所有依赖项,因此在NFS上遇到了问题,而且通常很脆弱。如果可用,最好使用MD5签名或类似签名。请参见欺骗例如。

-附加到perllocal.pod-添加“插件”功能

作者

肯·威廉姆斯<kwilliams@cpan.org>

开发问题、错误报告和补丁应发送到Module-Build邮件列表,地址为<模块build@perl.org>.

Bug报告也欢迎访问<http://rt.cpan.org/NoAuth/Bugs.html?Dist=模块-构建>。

最新开发版本可从Git存储库中获取,网址为<https://github.com/Perl-Toolchain-Gang/Module-Build>

版权

版权所有(c)2001-2006 Ken Williams。保留所有权利。

这个库是自由软件;您可以重新发布它和/或使用与Perl本身相同的条款对其进行修改。

另请参阅

perl(1),模块::构建::食谱,模块::Build::创作,模块::内部版本::API,外部工具::MakeMaker

META.yml公司规范:CPAN::Meta::规范

http://www.dsmit.com/cons/

http://search.cpan.org/dist/PerlBuildSystem/