我有一个 Python 的 C 扩展模块,我想让 Rubyists 可以使用它。
源代码有许多 C 模块,只有一个依赖于 Python。其余的仅依赖于彼此和标准库。python setup.py build
我可以用通常的方式构建它。
我一直在尝试使用添加 Ruby 支持,newgem
并且可以使用rake gem
. 然而,合并后的源代码有一个丑陋的目录布局(混合了 Gem 风格和 Setuptools 风格的结构),并且构建过程很杂乱。
我不能只将所有源代码保存在同一个目录中,因为会mkmf
自动选择依赖 Python 的模块并尝试构建它,并且用户不必安装 Python 来编译不会使用的模块。我目前的技巧是extconf.rb
将独立于 Python 的源文件复制到与依赖于 Ruby 的扩展模块相同的目录中。
有没有更明智的方法可以使代码对两种语言都可用?我应该在单独的 Gem 中复制与 Python 无关的代码吗?我应该将独立代码作为使用 autotools 构建的单独库发布吗?有没有mkmf
可以跳过不需要的模块的版本?