我为我正在开发的项目创建了一个库。从本质上讲,它将imgSeek打包为pHash / phashion的替代品。请参阅此链接了解背景信息:
http://hackerlabs.org/blog/2012/07/30/organizing-photos-with-duplicate-and-similarity-checking/
该库由一个C / C ++共享库(带有makefile& shit)和ruby-ffi绑定组成。我想打包这个,以便其他人可以使用它,但我真的不知道如何。
rubygems网站文件包装带有C扩展名的宝石,但不是我想要的。
我不确定这是否可行。也许我应该做的是将库发布为常规操作系统包(例如.deb),然后将ffi绑定作为gem发布,并让用户单独安装它们。这听起来像是很多工作。
是否可以将ffi绑定和库打包在一起,以便安装gem会导致构建库?对于我个人来说,这可以让这个代码更容易被任何想要使用它的人使用。
代码在这里:
https://bitbucket.org/dradetsky/ruby-seeklib
https://bitbucket.org/dradetsky/seeklib
答案 0 :(得分:0)
这就是ffi-compiler宝石的作用。
您编写了一个Rakefile,它使用类似mkmf的语法来定义如何构建项目,然后使用提供的帮助程序来加载库(因为构建的库不会出现在任何标准搜索路径中)。
我不相信你可以直接从你的Makefile构建,但是看起来很简单,它应该很容易翻译 - 唯一似乎没有记录的是如何更改传递给编译器的标志,但它看起来像
FFI::Compiler::CompileTask.new('example') do |c|
c.cflags << '-O2'
end
应该这样做。