📄 xsubpp
字号:
#!./miniperlrequire 5.002;use ExtUtils::ParseXS qw(process_file);use Getopt::Long;my %args = ();my $usage = "Usage: xsubpp [-v] [-csuffix csuffix] [-except] [-prototypes] [-noversioncheck] [-nolinenumbers] [-nooptimize] [-noinout] [-noargtypes] [-s pattern] [-typemap typemap]... file.xs\n";Getopt::Long::Configure qw(no_auto_abbrev no_ignore_case);@ARGV = grep {$_ ne '-C++'} @ARGV; # Allow -C++ for backward compatibilityGetOptions(\%args, qw(hiertype! prototypes! versioncheck! linenumbers! optimize! inout! argtypes! object_capi! except! v typemap=s@ output=s s=s csuffix=s )) or die $usage;if ($args{v}) { print "xsubpp version $ExtUtils::ParseXS::VERSION\n"; exit;}@ARGV == 1 or die $usage;$args{filename} = shift @ARGV;process_file(%args);exit( ExtUtils::ParseXS::errors() ? 1 : 0 );__END__=head1 NAMExsubpp - compiler to convert Perl XS code into C code=head1 SYNOPSISB<xsubpp> [B<-v>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversioncheck>] [B<-nolinenumbers>] [B<-nooptimize>] [B<-typemap typemap>] [B<-output filename>]... file.xs=head1 DESCRIPTIONThis compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.I<xsubpp> will compile XS code into C code by embedding the constructsnecessary to let C functions manipulate Perl values and creates the gluenecessary to let Perl access those functions. The compiler uses typemaps todetermine how to map C function parameters and variables to Perl values.The compiler will search for typemap files called I<typemap>. It will usethe following search path to find default typemaps, with the rightmosttypemap taking precedence. ../../../typemap:../../typemap:../typemap:typemapIt will also use a default typemap installed as C<ExtUtils::typemap>.=head1 OPTIONSNote that the C<XSOPT> MakeMaker option may be used to add these options toany makefiles generated by MakeMaker.=over 5=item B<-hiertype>Retains '::' in type names so that C++ hierarchical types can be mapped.=item B<-except>Adds exception handling stubs to the C code.=item B<-typemap typemap>Indicates that a user-supplied typemap should take precedence over thedefault typemaps. This option may be used multiple times, with the lasttypemap having the highest precedence.=item B<-output filename>Specifies the name of the output file to generate. If no file isspecified, output will be written to standard output.=item B<-v>Prints the I<xsubpp> version number to standard output, then exits.=item B<-prototypes>By default I<xsubpp> will not automatically generate prototype code forall xsubs. This flag will enable prototypes.=item B<-noversioncheck>Disables the run time test that determines if the object file (derivedfrom the C<.xs> file) and the C<.pm> files have the same versionnumber.=item B<-nolinenumbers>Prevents the inclusion of `#line' directives in the output.=item B<-nooptimize>Disables certain optimizations. The only optimization that is currentlyaffected is the use of I<target>s by the output C code (see L<perlguts>).This may significantly slow down the generated code, but this is the wayB<xsubpp> of 5.005 and earlier operated.=item B<-noinout>Disable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST> declarations.=item B<-noargtypes>Disable recognition of ANSI-like descriptions of function signature.=item B<-C++>Currently doesn't do anything at all. This flag has been a no-op formany versions of perl, at least as far back as perl5.003_07. It'sallowed here for backwards compatibility.=back=head1 ENVIRONMENTNo environment variables are used.=head1 AUTHOROriginally by Larry Wall. Turned into the C<ExtUtils::ParseXS> moduleby Ken Williams.=head1 MODIFICATION HISTORYSee the file F<Changes>.=head1 SEE ALSOperl(1), perlxs(1), perlxstut(1), ExtUtils::ParseXS=cut
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -