Почему gem не компилирует мое расширение C автоматически

Я строю драгоценный камень Ruby, который нуждается в расширении C. Этот, однажды скомпилированный, привязан через Ruby FFI к жемчужине.

Моя установка: я использую связку для строительных лесов. Внутри моей папки с драгоценными камнями у меня есть подпапка ext, Этот включает статический Makefile, другую подпапку source и extconf.rb.

source Папка содержит все.c и.h файлы.

Makefile не должен создаваться динамически. Если я позвоню make clean && make в ext все компилируется, и самоцвет работает как положено.

Теперь я даю extconf.rb следующее содержимое:

require 'mkmf'
require 'fileutils'

# Give it a name
extension_name = 'somename'

# The destination
dir_config extension_name

# Do the work
create_makefile extension_name

# Overwrite Makefile
FileUtils.cp 'Makefile.template', 'Makefile'

Поэтому я позволил mkmf сначала создать Makefile, а затем перезаписать его моим статическим шаблоном. Глупый.

Когда я строю свой драгоценный камень сейчас через rake build и попробуйте установить его на другую машину, расширение не скомпилировано.

Может кто-нибудь сказать мне, что мне нужно сделать, чтобы расширение автоматически компилировалось при установке?

С уважением, Феликс

1 ответ

Благодаря подсказке Нила Слейтера решение было простым: у меня не было gem.extension в моем файле gemspec, например:

s.extensions    = %w[ext/extconf.rb]

Для тех, кто сталкивается с той же проблемой.

Другие вопросы по тегам