3

我有一个 XS 模块。构建后将其./Build放入Module.so目录blib/arch/auto/XS中。

在我的Module.pm我有:

require XSLoader;
XSLoader::load( 'Module', $VERSION );

我运行程序为:

$ perl -Iblib/lib -MModule -e 'my $x; $x=1'

或者

$ perl -Iblib -MModule -e 'my $x; $x=1'

在这两种情况下,都会使用之前安装到系统中的模块。

我应该使用哪个选项来运行代码Module.sofrom blib/arch/auto

UPD
我尝试使用模块,blib因为在开发和实验过程中我不需要安装它XS

4

1 回答 1

2

我窥探xstut

perl -MExtUtils::Command::MM -e "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

然后在这里

 test_harness($verbose, @test_libs);

通过通过 $verbose 标志的 Test::Harness 在 @ARGV 上运行测试。任何@test_libs 都不会转移到测试的@INC 上。

所以我应该将两条路径都包含在@INC

$ perl -Iblib/lib -Iblib/arch -MModule -e 'my $x; $x=1'

UPD
正如@Borodin 所说,更好的解决方案是使用blib模块:

$ perl -Mblib -MModule -e 'my $x; $x=1'
于 2018-01-16T08:06:33.333 回答