perl - Perl 依赖项存在问题

标签 perl makefile

我接手了一个用 Perl 编写的项目,该项目有一些依赖项,例如 Template::ToolkitImage::ExifToolGD 仅举几例。目前,这些依赖项使用 make 中的 --prefix 选项构建到目录(“deps”文件夹)中。在主 Perl 脚本中,我使用类似以下内容来导入必要的模块:

use File::Spec::Functions qw(catdir);
use lib "lib";
use lib catdir(qw(deps lib perl5 site_perl));

catdir 用于偏离某些系统要求(例如假设“/”是文件夹分隔符;如果有人有其他选择,我愿意接受建议!)。 “lib”文件夹包含我的模块,“deps/lib/perl5/site_perl”文件夹是我的依赖项安装在原始计算机上的位置。

但是,在另一台计算机上构建依赖项后,所需的库似乎已移至不同的文件夹。我现在需要使用这些语句以使我的脚本正确运行:

use File::Spec::Functions qw(catdir);
use lib "lib";
use lib catdir(qw(deps lib perl 5.14.2));
use lib catdir(qw(deps share perl 5.14.2));

我想知道是否指定了前缀目录(“deps”)并让 use lib pragma 在该目录中递归搜索我的依赖项。另外,该脚本的用户无法访问 Internet,因此将我的项目编译为 CPAN 模块会适得其反。

感谢您的帮助!

最佳答案

使用INSTALL_BASE for the Makefile.PL--install_base for Build.PL安装模块时。他们提供stable install locations 。 PREFIX 和 --prefix 尝试模拟 perl 的系统库布局方式,并且对于制作包更有用。

此外,您还需要在将路径提供给 lib 之前运行 rel2abs 以获得绝对路径。如果您的代码chdir然后尝试require模块,这将保护您。或者您可以使用lib::abs .

并且ikegami是正确的,没有必要使传递给lib的文件路径可移植。只需以 Unix 风格传递它们即可。 Perl 会解决这个问题。

关于perl - Perl 依赖项存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732595/

相关文章:

linux - 将文件移动到另一个文件夹,包括文件名中的创建日期

perl - Windows 中 Perl 的版本处理

makefile 目标依赖项取决于目标名称

c++ - 通过命令行设置 CPPFLAGS

r - 类似“make”的依赖跟踪库?

ubuntu - 静音模式的配色

perl - Sed错误 "sed: no input files"

javascript - 在 Perl-CGI 生成的页面中包含 JavaScript

makefile - 如何在 Makefile 中打印消息?

linux - 如何跟踪子进程