Criando um Makefile.PL personalizado com Perl’s Dist :: Zilla

Dist :: Zilla cria automaticamente a maioria dos arquivos padrão necessários em uma distribuição Perl. No entanto, em algumas situações, você pode precisar de um Makefile.PL personalizado . O caso de uso mais comum é ao escrever módulos XS quando você precisa vincular a uma biblioteca específica.

Para ajudá-lo com isso, há vários módulos D: Z: P :: MakeMaker :: * .

Um módulo que permite gerenciar facilmente INC e LIBS é Dist :: Zilla :: Plugin :: MakeMaker :: Awesome . Você manipula o conteúdo do Makefile.PL usando um módulo que você mesmo escreve. A maioria dos quais é de chapa caldeira.

Por exemplo, aqui está meu ajuste para INC e LIBS para vincular a libssl e libcrypto. Simplifiquei o código para ter valores estáticos para INC e LIBS;

package inc::Your::Module::Name;
use Moose;

extends 'Dist::Zilla::Plugin::MakeMaker::Awesome';

override _build_WriteMakefile_args => sub {
my $LIBS = '-L/usr/local/openssl/lib -lssl -lcrypto';
my $INC = '-I/usr/local/include/openssl';

+{
%{super()},
LIBS
=> $LIBS,
INC
=> $INC,
};
};

__PACKAGE__
->meta->make_immutable;

Apenas as linhas com $ LIBS ou $ INC não são boiler-plate, então você pode ver que é muito fácil. Como não faz parte da distribuição, é colocado no diretório inc / . Em seguida, você altera o dist.ini para excluir o plug-in MakeMaker do pacote de plug- ins @Basic e carrega seu módulo:

exemplo dist.ini para gerador MakeFile.PL personalizado

name = your-module-name
author
= your name <you@example.com>
license
= Artistic_2_0
version
= 0.04

[Prereqs]
My::Module = 0

[@Filter]
-bundle = @Basic
-remove = License
-remove = MakeMaker

[=inc::Your::Module::Name]