哪些工具可以帮助构建XS项目?

Phi*_*ter 7 perl module makemaker perl-xs

我最近开始使用perlxstut学习XS ,教程建议我使用旧的h2xs工具创建我的模块来创建一个基于ExtUtils :: MakeMaker的项目.但是对于纯Perl项目,h2xs/EUMM长期以来一直不赞成使用Module :: Install,Module :: BuildDist :: Zilla.

是否有更现代的方式来创建XS项目?能模块::启动创建XS项目?Module :: Build或Dist :: Zilla可以构建XS项目吗?他们的pod页面对此事保持沉默.

另一方面,针对h2xs/EUMM的批评是否适用于XS项目?如果你还需要一个C编译器,那么要求make工具是否合理?

编辑:我看到这个问题回答了我关于创建项目的问题.我仍然想知道构建:EUMM是唯一的选择,还是Module :: Build和Dist :: Zilla也能够构建XS?

Phi*_*ter 4

事实证明,Module::Build 完全能够编译 XS。这是我设法拼凑出的完整 Build.PL:

use strict;
use Module::Build;

my $build = Module::Build->new(
    module_name  => 'Chocolate::Belgian',
    dynamic_config => 1,
    license      => 'perl',
    requires     => {
        'Module::Build' => '0.19', # xs
        'Test::More' => 0,
    },
    extra_compiler_flags => '-Iinclude',
    extra_linker_flags   => '',
    c_source     => 'src',
    needs_compiler => 1,
    xs_files     => {
        './Belgian.xs' => 'lib/Chocolate/Belgian.xs',
    },

   );

$build->create_build_script;
Run Code Online (Sandbox Code Playgroud)

这将构建一个发行版,其中包含目录中的.h包含文件(例如ppport.hinclude/、目录.c中的源文件src/以及项目基目录中.xs与包相对应的文件。Chocolate::Belgian

extra_compiler_flags对应于 make CCFLAGS, whileextra_linker_flags对应于LIBS(因此您可能希望-lm在那里链接 C 数学库)。