我正在使用DBI和DBD :: SQLite,现在我想使用SQLite的R * Tree功能。由于默认情况下DBD :: SQLite不编译此功能,因此我必须在DBD :: SQLite的Makefile.PL中的-DSQLITE_ENABLE_RTREE=1
变量中添加@CC_DEFINE
。如果我做'perl Makefile.PL&&制造&& make install',一切都在我的机器上本地工作正常,但最终需要可部署/可分发给最终用户。
在这样的情况下我该怎么办?我应该复制源代码,grep源代码,并创建DBD :: SQLite :: WithRTree吗?创建DBD :: SQLite 1.31.1的私有版本(其中1.31是DBD :: SQLite的当前版本)?或许更好的方式呢?
项目中的所有其他发行版都通过非公共CPAN :: Mini镜像+ CPAN :: Mini :: Inject进行部署/分发。
答案 0 :(得分:11)
我必须在DBD :: SQLite的Makefile.PL中为@CC_DEFINE变量添加'-DSQLITE_ENABLE_RTREE = 1'
你做错了,perl Makefile.PL DEFINE='-DSQLITE_ENABLE_RTREE=1'
有效。这在ExtUtils::MakeMaker中有记录。既然您知道这一点,那么涉及Distroprefs的简单解决方案可能会落实到位。
答案 1 :(得分:3)
对于类似的问题,我已将修改后的发行版安装在一个单独的目录中(不更改任何模块名称),并使用use lib qw(the/special/directory)
或将$PERL5LIB
设置为需要使用增强模块的脚本。 / p>
调整模块的名称也可以完成这项工作,但这听起来像制作和测试的工作要多得多。
答案 2 :(得分:0)
你可以这样做:
cpan
o conf makepl_arg "DEFINE='-DSQLITE_ENABLE_RTREE=1'"
o conf commit
然后,CPAN会将该DEFINE永久添加到所有Makefile.PL调用的前面。
所以,应该只是
cpan DBD::SQLite
你的makefile选项应该填入你的编译行