Phi*_*ter 7 perl module makemaker perl-xs
我最近开始使用perlxstut学习XS ,教程建议我使用旧的h2xs工具创建我的模块来创建一个基于ExtUtils :: MakeMaker的项目.但是对于纯Perl项目,h2xs/EUMM长期以来一直不赞成使用Module :: Install,Module :: Build或Dist :: Zilla.
是否有更现代的方式来创建XS项目?能模块::启动创建XS项目?Module :: Build或Dist :: Zilla可以构建XS项目吗?他们的pod页面对此事保持沉默.
另一方面,针对h2xs/EUMM的批评是否适用于XS项目?如果你还需要一个C编译器,那么要求make工具是否合理?
编辑:我看到这个问题回答了我关于创建项目的问题.我仍然想知道构建: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;
Run Code Online (Sandbox Code Playgroud)
这将构建一个发行版,其中包含目录中的.h
包含文件(例如ppport.h
)include/
、目录.c
中的源文件src/
以及项目基目录中.xs
与包相对应的文件。Chocolate::Belgian
extra_compiler_flags
对应于 make CCFLAGS
, whileextra_linker_flags
对应于LIBS
(因此您可能希望-lm
在那里链接 C 数学库)。
归档时间: |
|
查看次数: |
838 次 |
最近记录: |