我正在研究一个模块,我想有两个后端,Module(::PerlArray)
和Module::PDL
(其中可以将取决于Module
)。两者都需要访问functions.c/.h
文件进行构建。该文件包含模块所需的相当复杂的逻辑。而不是与每个模块单独分发,是否有某种方法可以将其与系统上的Module::PP
保持一致,然后将其添加到EU::MM
或M::B
中的适当构建标志中(考虑到这里的复杂性可能是后者)?
更直观地说
--Module--
Module.pm
Module/PerlArray.pm
Module/PerlArray.xs (#include functions.h
#include perlarray_backend.h)
Module/src/functions.c
Module/src/perlarray_backend.c
Module/inc/functions.h
Module/inc/perlarray_backend.h
--Module::PDL--
Module/PDL.pm
Module/PDL.xs (#include functions.h /*from Module*/
#include pdl_backend.h)
Module/src/pdl_backend.c
Module/inc/pdl_backend.h
和编译生成函数。O和链接。我相信我能弄清楚如何适当地设置标志,但我如何才能使模块在安装时保持functions.c
文件,以及我如何在安装Module::PDL
时找到它?有什么地方可以放置functions.c/.h
吗?
你看过DBI吗?它按照您的建议:它安装了一些DBD驱动程序可以#包含在其XS代码中的.h文件,以及DBD驱动程序可以调用的库。
模块应该独立安装。也就是说,假设我已经安装了必要的Perl模块(但不一定仍然以源代码形式存在),那么应该可以将所有模块安装在一个分布式tar文件中,而不需要引用任何其他模块的源代码。
你有选择。一种方法是让一个源目录创建几个分布式tar球,每个tar球可以在分布式源目录中拥有一个共享function.[ch]
的副本。