打包Ruby C扩展
我发现了一个关于如何打包Ruby C扩展的博客 根据博客的说法( ... )它说打包Ruby C扩展,ruby,rubygems,native-code,Ruby,Rubygems,Native Code,我发现了一个关于如何打包Ruby C扩展的博客 根据博客的说法( ... )它说 具有本机C扩展的独立于平台的Ruby gems 仅添加C扩展名源文件:即.C和extconf.rb 只有文件。不需要Makefile和编译文件 将ext目录添加到所需路径 将平台保持为Ruby(独立) 注册包含的C扩展:这将告诉RubyGems 安装时有一个编译步骤。这是由 提供extconf.rb文件的所有路径 具有本机C扩展的平台相关Ruby gems 添加编译后的C扩展文件(与为 普通Ruby文件) 将e
- 具有本机C扩展的独立于平台的Ruby gems
- 仅添加C扩展名源文件:即.C和extconf.rb 只有文件。不需要Makefile和编译文件
- 将ext目录添加到所需路径
- 将平台保持为Ruby(独立)
- 注册包含的C扩展:这将告诉RubyGems 安装时有一个编译步骤。这是由 提供extconf.rb文件的所有路径
- 具有本机C扩展的平台相关Ruby gems
- 添加编译后的C扩展文件(与为 普通Ruby文件)
- 将ext目录添加到所需路径
- 将平台设置为当前平台
platform
中,由platform分解
对于一个简单的gem,您是对的,内容应该在ext/
中。在这种情况下,它看起来不够灵活
如果您查看
ext/
中的文件,会发现有很多疯狂的事情发生,这远远超出了制作C扩展gem时放在那里的默认存根。此时,该页面已死亡。你最好的办法就是看看阿卡·丁德洛夫的博客
这里有一个链接:
这听起来就像你描述的那样,我会说这是正常的
bin
ext
lib
根据我的经验,最好在ext和lib文件夹中使用与要构建的gem扩展名相近的同名文件夹。是的,将extconf.rb和您的C文件放在ext'gem_ext_name'的子文件夹中。但是你可以把东西放在任何你想放的地方,只要耙子知道它们在哪里
我的构建通常在编译期间进入tmp文件夹,然后在构建共享对象时,它会从temp文件夹复制到lib文件夹,该文件夹在Rakefile中列出了要复制到的目录