0

我为我正在从事的项目创建了一个库。本质上,它将 imgSeek 打包为 pHash/phashion 的替代品。有关背景,请参阅此链接:

http://hackerlabs.org/blog/2012/07/30/organizing-photos-with-duplicate-and-similarity-checking/

该库由一个 C/C++ 共享库(带有 makefile 和狗屎)和 ruby​​-ffi 绑定组成。我想打包这个以便其他人可以使用它,但我真的不知道如何。

rubygems 站点文档使用 C 扩展打包了一个 gem,但不是我想要的。

我不确定这是否可能。也许我应该做的是将库发布为常规操作系统包(例如 .deb),然后将 ffi 绑定发布为 gem,并让用户单独安装它们。这听起来像是很多工作。

是否可以将 ffi 绑定和库打包在一起,以便安装 gem 导致构建库?就我个人而言,这让我更容易将此代码提供给任何可能想要使用它的人。

代码在这里:

https://bitbucket.org/dradetsky/ruby-seeklib

https://bitbucket.org/dradetsky/seeklib

https://github.com/dradetsky/ruby-seeklib

https://github.com/dradetsky/seeklib

4

1 回答 1

0

这就是ffi-compiler gem 所做的。

您编写了一个使用类似 mkmf 的语法的 Rakefile 来定义如何构建您的项目,然后使用提供的帮助程序来加载您的库(因为构建的库不会在任何标准搜索路径中)。

我不相信你可以直接从你的 Makefile 构建,但是它看起来很简单,应该很容易翻译 - 唯一似乎没有记录的事情是如何更改传递给编译器的标志,但它看起来喜欢

FFI::Compiler::CompileTask.new('example') do |c|
  c.cflags << '-O2'
end

应该这样做。

于 2015-05-27T06:17:28.337 回答