在 Windows 和 Linux 上使用 NativeCall 为 C 库发布 Perl 6 绑定的最佳策略是什么?
开发者是否需要同时编译.dll和.so文件并用perl6代码上传到github?或者在 perl6 上有一个选项,比如 perl5,将 C 源文件与 Perl 6 代码捆绑在一起,C 编译器将作为 make 和 make install 的一部分运行?
在 Windows 和 Linux 上使用 NativeCall 为 C 库发布 Perl 6 绑定的最佳策略是什么?
开发者是否需要同时编译.dll和.so文件并用perl6代码上传到github?或者在 perl6 上有一个选项,比如 perl5,将 C 源文件与 Perl 6 代码捆绑在一起,C 编译器将作为 make 和 make install 的一部分运行?
这些库不需要先编译(尽管可以)。要首先完成此操作,您需要Build.pm
在发行版的根目录中有一个文件:
class Builder {
method build($dist-path) {
# do build stuff to your module
# which is located at $dist-path
}
# Only needed for panda compatability
method isa($what) {
return True if $what.^name eq 'Panda::Builder';
callsame;
}
}
然后你会想要使用像LibraryMake这样的模块。这里我们make
在方法中使用它的例程build
:
use LibraryMake;
class Builder {
method build($dist-path) {
make($dist-path, "$dist-path/resources");
# or you could do the appropriate `shell` calls
# yourself and have no extra dependencies
}
...
此方法由包管理器zef和panda支持,并且还允许通过以下方式手动运行它perl6 -I. -MBuild -e 'Builder.new.build($*CWD)'
这是一个工作示例