【问题标题】:How do I disable a make target with the perl MakeMaker module?如何使用 perl MakeMaker 模块禁用 make 目标?
【发布时间】:2015-02-23 21:14:47
【问题描述】:

我正在使用 ExtUtils::MakeMaker 打包我的 perl 模块,但我不希望 makefile 将文件复制到系统上的任何位置。 我需要禁用“安装”目标,而是告诉用户,当他键入“make install”时,这个 makefile 只支持“make dist”。

【问题讨论】:

  • 只是好奇:如果用户愿意,为什么不让用户运行make install?否则,他们将如何使用您正在生产的模块?
  • 因为应用程序依赖于几个系统管理选项,例如“我将使用哪个数据库后端”等,并且仅将模块复制到系统上的任何目录没有真正意义。我只是提供 Makefile.PL 作为 Linux 发行版模块打包器的帮助模块。

标签: perl module packaging makemaker


【解决方案1】:

在您的 Makefile.PL 文件中定义 MY::install

sub MY::install {
    "install ::\n\techo You should run \\'make dist\\', not \\'make install\\'"
}

该函数应返回您要用于替换 Makefile 的 install 部分的文本。

您可以将make install 设为make dist 的同义词:

sub MY::install [ "install :: dist\n" }

文档:Overriding MakeMaker methods

【讨论】:

  • 您的答案的略微更新版本正是我想要的:sub MY::install { "install ::\n\t\$(info You should run 'make dist', not 'make install')" } 谢谢
  • 我只是建议将PREFIX => '/dev/null, 放入WriteMakefile 结构中。你可以运行make install,但它不起作用。很高兴知道您实际上可以覆盖目标本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2012-02-12
相关资源
最近更新 更多