我有一个用于Python的C扩展模块,我想让Ruby程序员也可以使用它。
源代码包含多个C模块,其中只有一个依赖于Python。其余的模块仅依赖于彼此和标准库。我可以按照通常的方式使用python setup.py build
来构建它。
我一直在尝试使用 newgem
添加 Ruby 支持,并且可以使用 rake gem
构建扩展版本。但是,合并的源具有丑陋的目录布局(混合了 Gem 样式和 Setuptools 样式结构),并且构建过程也很混乱。
我不能把所有的资源都放在同一个目录下,因为mkmf
会自动捕获Python依赖模块并尝试构建它,用户不应该必须安装Python来编译一个不会使用的模块。我的当前解决方法是让extconf.rb
将Python独立源文件复制到与Ruby相关的扩展模块的同一目录中。
有没有更明智的方法使代码可用于两种语言?我应该只是在一个单独的Gem中复制Python独立的代码吗?我应该将独立的代码发布为使用autotools构建的单独的lib吗?有没有一个版本的