1

我正在开发一个模块,我希望有两个后端,aModule(::PerlArray)Module::PDL(这取决于Module)。两者都需要访问functions.c/.h文件以进行构建。该文件具有模块所需的相当复杂的逻辑。与其将它与每个模块分开分发,是否有某种方法可以将其保留Module::PP在系统上,然后将其添加到或中的适当构建标志中EU::MMM::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

编译生成functions.o和链接。我确定我可以弄清楚如何正确设置标志,但是如何让 Modulefunctions.c在安装时保留文件,以及如何在安装时找到它Module::PDL?有什么地方可以放functions.c/.h吗?

4

2 回答 2

1

你看过DBI吗?它按照您的建议执行:它安装了一些 DBD 驱动程序可以在其 XS 代码中#include 的 .h 文件,以及一个 DBD 驱动程序可以调用的库。

于 2011-10-12T17:19:00.837 回答
0

模块应该是可独立安装的。也就是说,如果我安装了必备的 Perl 模块(但不一定仍然以源代码形式存在),那么应该可以将所有模块安装在一个分布式 tar 文件中,而无需参考任何其他模块的源代码。

你有选择。一种是让单个源目录创建多个分布式 tar 球,它们每个都可以function.[ch]在分布式源中拥有一个共享的副本。

另一个主要选项是将两个模块捆绑到一个分布式 tar 球中。

于 2011-10-12T16:41:13.383 回答