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

前端之家收集整理的这篇文章主要介绍了perl – 哪些工具可以帮助构建XS项目?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近开始使用 perlxstut学习XS,教程建议我使用旧的 h2xs工具创建我的模块来创建基于 ExtUtils::MakeMaker的项目.然而,对于纯Perl项目,h2xs / EUMM长期以来一直不赞成 Module::Install,Module::BuildDist::Zilla.

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

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

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

解决方法

事实证明,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;

这将在include /目录中创建.h包含文件(如ppport.h),在src /目录中生成.c源文件,在项目基目录中创建与Chocolate :: Belgian包对应的.xs文件. .

extra_compiler_flags对应于make CCFLAGS,而extra_linker_flags对应于LIBS(因此你可能需要-lm来链接C数学库).

猜你在找的Perl相关文章