gpt4 book ai didi

ruby - 如何将其他构建系统与 ruby​​gems 一起使用?

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:32 24 4
gpt4 key购买 nike

由于 the inflexibility of mkmf,我的 C 代码越来越难管理了.因此,我想使用另一个构建系统。

为了构建 C 扩展,rubygems 需要什么?如何将 autotools/configure 等构建系统集成到工作流中?

Gem::Specification.new 'my_gem' do |gem|
# Will this work?
gem.extensions = %w(ext/my_gem/configure)
end

最佳答案

有一些工具可以帮助解决这种情况(例如 rake-compiler gem),但我更喜欢使用 RubyInline gem。它旨在用其他语言的实现替换 Ruby 代码中缓慢的、性能关键的部分(例如,开箱即用地支持 C),但它也用于内联调用外部 C 库的代码。

RubyInline 示例如下所示:

class MyClass
inline(:C) do |builder|
builder.include '<stdio.h>'
builder.c <<-END
void my_printf(char * string){
printf("%s\\n",string);
}
END
end
end
MyClass.new.my_printf("Abc")
# prints 'Abc'

RubyInline 的优点是您不必为 C 和 Ruby 保留单独的文件,开箱即用地支持一些基本的参数转换,您不必编写粘合代码。不好的部分是您无法完全控制编译等。我个人认为 RubyInline 是一个非常强大的解决方案。

关于ruby - 如何将其他构建系统与 ruby​​gems 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com