Я строю драгоценный камень с Rust и мне нужно знать, как запустить компилятор Rust при установке драгоценного камня. С C-расширением я могу использовать mkmf
для создания Makefile. Но как я могу запустить cargo build --release
?Как я могу создать библиотеку Rust при установке драгоценного камня?
структура каталогов выглядит следующим образом:
.
├── bin
│ ├── console
│ └── setup
├── CODE_OF_CONDUCT.md
├── Gemfile
├── Gemfile.lock
├── lib
│ ├── rmpd_adschedule
│ │ └── version.rb
│ └── rustgem.rb
├── LICENSE.txt
├── Rakefile
├── README.md
├── rustgem.gemspec
├── rust
│ ├── Cargo.lock
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
└── spec
├── rustgem.rb
└── spec_helper.rb
Я создал задачу Rake для создания библиотеки Rust:
task :compile do
sh "cd #{File.dirname(__FILE__)}/rust && cargo build --release"
end
Но как запустить эту Rake задачу при установке камня? Или как создать подходящий Makefile с mkmf
? Makefile должен выглядеть следующим образом:
all:
cd rust/ && cargo build --release
Но это не работает, если я ставлю его в корневой каталог, и я не знаю, как сказать mkmf
для создания этого точного Makefile.
Я нашел один глупый способ сделать это, когда драгоценный камень загружается:
module Rustgem
system("cd #{File.dirname(__FILE__)}/../rust && cargo build --release")
end
Но это не является хорошим решением.
Возможно, вы захотите, чтобы ваш * основной метод распространения был загружен предварительно построенными бинарными библиотеками. У многих людей будет установлен компилятор Rust. Конечно, было бы полезно иметь резервное решение, которое строится из источника Rust. – Shepmaster